瀏覽代碼

* fixed small bugs

* added example shaders (simple texture and class based phong light)
master
Bergmann89 11 年之前
父節點
當前提交
c8037c8f65
共有 5 個文件被更改,包括 80 次插入 和 2 次删除
  1. +31
    -0
      library/header/examples/color.shdr
  2. +38
    -0
      library/header/examples/phonglight.shdr
  3. +9
    -0
      library/header/examples/simple.shdr
  4. +1
    -1
      library/header/ulibShaderFile.pas
  5. +1
    -1
      library/libShaderFile.lpr

+ 31
- 0
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}

+ 38
- 0
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}

+ 9
- 0
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}

+ 1
- 1
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;



+ 1
- 1
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


Loading…
取消
儲存