Difference between revisions of "Shader.new"
| Line 13: | Line 13: | ||
|   Shader.new(vertex shader,fragment shader,flags,uniform descriptor,attribute descriptor) |   Shader.new(vertex shader,fragment shader,flags,uniform descriptor,attribute descriptor) | ||
| </source> | </source> | ||
| − | '''vertex shader''': (string) The path and name for the vertex shader without its extension  | + | === Parameters === | 
| − | '''fragment shader''': (string) The path and name for the fragment shader without its extension  | + | '''vertex shader''': (string) The path and name for the vertex shader without its extension <br/> | 
| − | '''flags''': (number) A set of numerical flags or 0 if none  | + | '''fragment shader''': (string) The path and name for the fragment shader without its extension <br/> | 
| − | '''uniform descriptor''': (table) An array of uniforms/constants descriptors  | + | '''flags''': (number) A set of numerical flags or 0 if none <br/> | 
| − | '''attribute descriptor''': (table) An array of attributes descriptors ''''''<br/> | + | '''uniform descriptor''': (table) An array of uniforms/constants descriptors <br/> | 
| + | '''attribute descriptor''': (table) An array of attributes descriptors <br/> | ||
| + | === Examples === | ||
| + | '''Shader example'''<br/> | ||
| + | <source 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> | ||
Revision as of 10:45, 23 August 2018
Available since: Gideros 2015.06.30
Description
Create 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
 Shader.new(vertex shader,fragment shader,flags,uniform descriptor,attribute descriptor)
Parameters
vertex shader: (string) The path and name for the vertex shader without its extension 
fragment shader: (string) The path and name for the fragment shader without its extension 
flags: (number) A set of numerical flags or 0 if none 
uniform descriptor: (table) An array of uniforms/constants descriptors 
attribute descriptor: (table) An array of attributes descriptors 
Examples
Shader example
--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)
