diff --git a/library/header/examples/color.shdr b/library/header/examples/color.shdr new file mode 100644 index 0000000..294eeb3 --- /dev/null +++ b/library/header/examples/color.shdr @@ -0,0 +1,31 @@ +{$CLASS Color} + {$PROPERTY UseColorMap 'false'} +{$END} + +{$CLASS ColorFrag $EXTENDS Color} + {$FUNC 'vec4' GetColor $INLINE} + {$IF UseColorMap} + {$VAR 'vec2' '_texCoord' 'gl_TexCoord[0].st'} + {$UNIFORM 'sampler2D' 'uColorMap'} + return texture2D(uColorMap, _texCoord); + {$ELSE} + return gl_Color; + {$END} + {$END} + + {$MAIN} + gl_FragColor = {$CALL GetColor}; + {$END} +{$END} + +{$CLASS ColorVert $EXTENDS Color} + {$MAIN} + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + {$IF UseColorMap} + gl_TexCoord[0] = gl_MultiTexCoord0; + {$ELSE} + gl_FrontColor = gl_Color; + gl_BackColor = gl_Color; + {$END} + {$END} +{$END} \ No newline at end of file diff --git a/library/header/examples/phonglight.shdr b/library/header/examples/phonglight.shdr new file mode 100644 index 0000000..3000692 --- /dev/null +++ b/library/header/examples/phonglight.shdr @@ -0,0 +1,38 @@ +{$INCLUDE 'color.shdr'} + +{$CLASS PhongLight} + {$PROPERTY UsePhongLight 'false'} + {$IF UsePhongLight} + {$VARYING 'vec3' 'vNormal'} + {$VARYING 'vec3' 'vVertex'} + {$END} +{$END} + +{$CLASS PhongLightFrag $EXTENDS PhongLight ColorFrag} + {$MAIN} + vec4 color = {$CALL GetColor}; + {$IF UsePhongLight} + vec3 eye = normalize(-vVertex); + vec3 lightVec = gl_LightSource[0].position.xyz - vVertex; + vec3 reflected = normalize(reflect(lightVec, vNormal)); + + vec4 ambient = gl_LightSource[0].ambient * gl_FrontMaterial.ambient; + vec4 diffuse = gl_LightSource[0].diffuse * max(dot(vNormal, lightVec), 0.0) * gl_FrontMaterial.diffuse; + vec4 specular = gl_LightSource[0].specular * pow(max(dot(reflected, eye), 0.0), gl_FrontMaterial.shininess) * gl_FrontMaterial.specular; + + gl_FragColor = vec4((ambient + diffuse) * color) + specular; + {$ELSE} + gl_FragColor = color; + {$END} + {$END} +{$END} + +{$CLASS PhongLightVert $EXTENDS PhongLight ColorVert} + {$MAIN} + {$INHERITED ColorVert $INLINE}; + {$IF UsePhongLight} + vNormal = normalize(gl_NormalMatrix * gl_Normal); + vVertex = vec3(gl_ModelViewMatrix * gl_Vertex); + {$END} + {$END} +{$END} \ No newline at end of file diff --git a/library/header/examples/simple.shdr b/library/header/examples/simple.shdr new file mode 100644 index 0000000..a00c188 --- /dev/null +++ b/library/header/examples/simple.shdr @@ -0,0 +1,9 @@ +{$MAIN} + {$PROPERTY EnableTexture 'false'} + {$IF EnableTexture} + {$UNIFORM 'sampler2D' 'uTexture0'} + gl_FragColor = texture2D(uTexture0, gl_TexCoord[0].st); + {$ELSE} + gl_FragColor = gl_Color; + {$END} +{$END} \ No newline at end of file diff --git a/library/header/ulibShaderFile.pas b/library/header/ulibShaderFile.pas index da983ee..8693f5f 100644 --- a/library/header/ulibShaderFile.pas +++ b/library/header/ulibShaderFile.pas @@ -166,7 +166,7 @@ function LibOpen(const aLibName: String; out aError: String): TLibHandle; begin result := LoadLibraryA(PAnsiChar(AnsiString(aLibName))); if (result = 0) - then aError := GetLastError() + then aError := SysErrorMessage(GetLastError()) else aError := ''; end; diff --git a/library/libShaderFile.lpr b/library/libShaderFile.lpr index 0bd20fa..98c3f52 100644 --- a/library/libShaderFile.lpr +++ b/library/libShaderFile.lpr @@ -555,7 +555,7 @@ var i: Integer; begin i := fProperties.IndexOf(aName); - if (i <= 0) then begin + if (i < 0) then begin SetLastError(LSF_ERR_INVALID_PROPERTY_NAME, Format('%s is not a valid/known property name', [aName])); result := LastErrorCode; end else