Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if PerPixelLighting then begin
- AddFragmentUniform('uniform sampler3D uLightGridTex;');
- AddFragmentUniform('uniform vec3 uLightGridScale;');
- AddFragmentUniform('uniform vec3 uLightGridOffset;');
- AddFragmentUniform('uniform vec3 uPrimaryLightAmbient;');
- AddFragmentUniform('uniform vec3 uPrimaryLightDirection;');
- AddFragmentUniform('uniform vec3 uPrimaryLightDirectional;');
- if not uLightGridTex then begin
- inc(TexUnits);
- end;
- AddFragmentLine('void lightGridProcess(in vec3 vertex,inout vec3 lightAmbient,inout vec3 lightDirected,inout vec3 lightDirection){');
- AddFragmentLine(' if(uLightGridScale.x>0.0){');
- AddFragmentLine(' vec3 v=(vertex.xyz*uLightGridScale)-uLightGridOffset;');
- AddFragmentLine(' vec4 a=texture3D(uLightGridTex,v);');
- AddFragmentLine(' vec4 b=texture3D(uLightGridTex,vec3(v.xy,1.0-v.z));');
- AddFragmentLine(' lightAmbient=a.xyz;');
- AddFragmentLine(' lightDirected=b.xyz;');
- AddFragmentLine(' lightDirection.x=(2.0*a.w)-1.0;');
- AddFragmentLine(' lightDirection.y=(2.0*b.w)-1.0;');
- AddFragmentLine(' lightDirection.z=(1.0-abs(lightDirection.x))-abs(lightDirection.y);');
- AddFragmentLine(' if(lightDirection.z<0.0){');
- AddFragmentLine(' lightDirection.xy=sign(lightDirection.xy)-lightDirection.xy;');
- AddFragmentLine(' }');
- AddFragmentLine(' lightDirection=normalize(lightDirection);');
- AddFragmentLine(' }else{');
- AddFragmentLine(' lightAmbient=uPrimaryLightAmbient;');
- AddFragmentLine(' lightDirected=uPrimaryLightDirectional;');
- AddFragmentLine(' lightDirection=uPrimaryLightDirection;');
- AddFragmentLine(' }');
- AddFragmentLine('}');
- end;
- ....
- AddFragmentLine('vec4 perPixelLighting(){');
- AddFragmentLine(' vec3 lightAmbient=vec3(0.25);');
- AddFragmentLine(' vec3 lightDirected=vec3(0.75);');
- AddFragmentLine(' vec3 lightDirection=vNormal.xyz;');
- AddFragmentLine(' lightGridProcess(vWorldSpacePosition.xyz,lightAmbient,lightDirected,lightDirection);');
- AddFragmentLine(' vec4 color=vec4(vec3(clamp(lightAmbient+(max(dot(vNormal.xyz,lightDirection.xyz),0.0)*lightDirected),0.0,1.0)),1.0);');
- AddFragmentLine(' return color;');
- AddFragmentLine('}');
Advertisement
Add Comment
Please, Sign In to add comment