Difference between revisions of "Shader.new"
From GiderosMobile
m (Text replacement - "</source>" to "</syntaxhighlight>") |
|||
Line 5: | Line 5: | ||
=== Description === | === Description === | ||
Creates a new shader instance. | Creates a new shader instance. | ||
+ | <syntaxhighlight lang="lua"> | ||
+ | Shader.new(vertexShader, fragmentShader, flags, uniformDescriptor, attributeDescriptor) | ||
+ | </syntaxhighlight> | ||
The ‘Shader.new()’ constructor takes five arguments: | The ‘Shader.new()’ constructor takes five arguments: | ||
Line 12: | Line 15: | ||
*an array of uniforms/constants descriptors | *an array of uniforms/constants descriptors | ||
*an array of attributes descriptors | *an array of attributes descriptors | ||
− | |||
− | |||
− | |||
=== Parameters === | === Parameters === | ||
Line 24: | Line 24: | ||
=== Example === | === Example === | ||
− | '''A blur shader | + | '''A blur shader''' |
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
--Shaders are in vShader.glsl and fShader.glsl files | --Shaders are in vShader.glsl and fShader.glsl files |
Revision as of 23:00, 3 October 2023
Available since: Gideros 2015.06.30
Class: Shader
Description
Creates a new shader instance.
Shader.new(vertexShader, fragmentShader, flags, uniformDescriptor, attributeDescriptor)
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
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
--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)