bero1985

Voxel PPL

Apr 26th, 2013
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.26 KB | None | 0 0
  1.  
  2.   if PerPixelLighting then begin
  3.    AddFragmentUniform('uniform sampler3D uLightGridTex;');
  4.    AddFragmentUniform('uniform vec3 uLightGridScale;');
  5.    AddFragmentUniform('uniform vec3 uLightGridOffset;');
  6.    AddFragmentUniform('uniform vec3 uPrimaryLightAmbient;');
  7.    AddFragmentUniform('uniform vec3 uPrimaryLightDirection;');
  8.    AddFragmentUniform('uniform vec3 uPrimaryLightDirectional;');
  9.    if not uLightGridTex then begin
  10.     inc(TexUnits);
  11.    end;
  12.    AddFragmentLine('void lightGridProcess(in vec3 vertex,inout vec3 lightAmbient,inout vec3 lightDirected,inout vec3 lightDirection){');
  13.    AddFragmentLine('  if(uLightGridScale.x>0.0){');
  14.    AddFragmentLine('    vec3 v=(vertex.xyz*uLightGridScale)-uLightGridOffset;');
  15.    AddFragmentLine('    vec4 a=texture3D(uLightGridTex,v);');
  16.    AddFragmentLine('    vec4 b=texture3D(uLightGridTex,vec3(v.xy,1.0-v.z));');
  17.    AddFragmentLine('    lightAmbient=a.xyz;');
  18.    AddFragmentLine('    lightDirected=b.xyz;');
  19.    AddFragmentLine('    lightDirection.x=(2.0*a.w)-1.0;');
  20.    AddFragmentLine('    lightDirection.y=(2.0*b.w)-1.0;');
  21.    AddFragmentLine('    lightDirection.z=(1.0-abs(lightDirection.x))-abs(lightDirection.y);');
  22.    AddFragmentLine('    if(lightDirection.z<0.0){');
  23.    AddFragmentLine('      lightDirection.xy=sign(lightDirection.xy)-lightDirection.xy;');
  24.    AddFragmentLine('    }');
  25.    AddFragmentLine('    lightDirection=normalize(lightDirection);');
  26.    AddFragmentLine('  }else{');
  27.    AddFragmentLine('    lightAmbient=uPrimaryLightAmbient;');
  28.    AddFragmentLine('    lightDirected=uPrimaryLightDirectional;');
  29.    AddFragmentLine('    lightDirection=uPrimaryLightDirection;');
  30.    AddFragmentLine('  }');
  31.    AddFragmentLine('}');
  32.   end;
  33.  
  34. ....
  35.  
  36.       AddFragmentLine('vec4 perPixelLighting(){');
  37.       AddFragmentLine('  vec3 lightAmbient=vec3(0.25);');
  38.       AddFragmentLine('  vec3 lightDirected=vec3(0.75);');
  39.       AddFragmentLine('  vec3 lightDirection=vNormal.xyz;');
  40.       AddFragmentLine('  lightGridProcess(vWorldSpacePosition.xyz,lightAmbient,lightDirected,lightDirection);');
  41.       AddFragmentLine('  vec4 color=vec4(vec3(clamp(lightAmbient+(max(dot(vNormal.xyz,lightDirection.xyz),0.0)*lightDirected),0.0,1.0)),1.0);');
  42.       AddFragmentLine('  return color;');
  43.       AddFragmentLine('}');
Advertisement
Add Comment
Please, Sign In to add comment