Difference between revisions of "Shader.new"

From GiderosMobile
m (Text replacement - "<source" to "<syntaxhighlight")
Line 12: Line 12:
 
*an array of uniforms/constants descriptors
 
*an array of uniforms/constants descriptors
 
*an array of attributes descriptors
 
*an array of attributes descriptors
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
Shader.new(vertexShader, fragmentShader, flags, uniformDescriptor, attributeDescriptor)
 
Shader.new(vertexShader, fragmentShader, flags, uniformDescriptor, attributeDescriptor)
 
</source>
 
</source>
Line 25: Line 25:
 
=== Example ===
 
=== Example ===
 
'''A blur shader example'''
 
'''A blur shader example'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
--Shaders are in vShader.glsl and fShader.glsl files
 
--Shaders are in vShader.glsl and fShader.glsl files
 
local shader=Shader.new("vShader", "fShader", 0,
 
local shader=Shader.new("vShader", "fShader", 0,

Revision as of 14:30, 13 July 2023

Available since: Gideros 2015.06.30
Class: Shader

Description

Creates a new shader instance.

The ‘Shader.new()’ constructor takes five arguments:

  • the path and name for the vertex shader without its extension. Gideros will search the assets for a file with the supplied name, automatically adding the extension relevant for the target platform: .glsl for OpenGL, .cso or .hlsl for DirectX
  • the path and name for the fragment shader without its extension. Same remark as above applies too
  • a set of numerical flags or 0 if none. See description below
  • an array of uniforms/constants descriptors
  • an array of attributes descriptors

<syntaxhighlight lang="lua"> Shader.new(vertexShader, fragmentShader, flags, uniformDescriptor, attributeDescriptor) </source>

Parameters

vertexShader: (string) the path and name for the vertex shader without its extension
fragmentShader: (string) the path and name for the fragment shader without its extension
flags: (number) a set of numerical flags or 0 if none
uniformDescriptor: (table) an array of uniforms/constants descriptors
attributeDescriptor: (table) an array of attributes descriptors

Example

A blur shader example <syntaxhighlight lang="lua"> --Shaders are in vShader.glsl and fShader.glsl files local shader=Shader.new("vShader", "fShader", 0, { {name="vMatrix", type=Shader.CMATRIX, sys=Shader.SYS_WVP, vertex=true}, {name="fColor", type=Shader.CFLOAT4, sys=Shader.SYS_COLOR, vertex=false}, {name="fTexture", type=Shader.CTEXTURE, vertex=false}, {name="fTexelSize", type=Shader.CFLOAT4, vertex=false}, {name="fRad", type=Shader.CINT, vertex=false}, }, { {name="vVertex", type=Shader.DFLOAT, mult=3, slot=0, offset=0}, {name="vColor", type=Shader.DUBYTE, mult=4, slot=1, offset=0}, {name="vTexCoord", type=Shader.DFLOAT, mult=2, slot=2, offset=0}, } );

shader:setConstant("fRad", Shader.CINT, 1, 0) -- initial blur level shader:setConstant("fTexelSize", Shader.CFLOAT4, 1, {1/texw, 1/texh, 0, 0}) -- initial texel size

sprite:setShader(shader) </source>