Diffuse.bsl 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include "$ENGINE$\DeferredBasePass.bslinc"
  2. Parameters =
  3. {
  4. Sampler2D gAlbedoSamp : alias("gAlbedoTex");
  5. Sampler2D gNormalSamp : alias("gNormalTex");
  6. Texture2D gAlbedoTex;
  7. Texture2D gNormalTex = "normal";
  8. };
  9. Technique : base("Surface") =
  10. {
  11. Language = "HLSL11";
  12. Pass =
  13. {
  14. Fragment =
  15. {
  16. SamplerState gAlbedoSamp : register(s0);
  17. SamplerState gNormalSamp : register(s1);
  18. Texture2D gAlbedoTex : register(t0);
  19. Texture2D gNormalTex : register(t1);
  20. float4 main(
  21. in VStoFS input,
  22. out float4 OutGBufferA : SV_Target1,
  23. out float4 OutGBufferB : SV_Target2) : SV_Target0
  24. {
  25. float3 normal = normalize(gNormalTex.Sample(gNormalSamp, input.uv0) * 2.0f - float3(1, 1, 1));
  26. float3 worldNormal = calcWorldNormal(input, normal);
  27. GBufferData gbufferData;
  28. gbufferData.albedo = gAlbedoTex.Sample(gAlbedoSamp, input.uv0);
  29. gbufferData.worldNormal.xyz = worldNormal;
  30. encodeGBuffer(gbufferData, OutGBufferA, OutGBufferB);
  31. // TODO - Just returning a simple ambient term, use better environment lighting later
  32. return float4(gbufferData.albedo.rgb, 1.0f) * 0.01f;
  33. }
  34. };
  35. };
  36. };
  37. Technique : base("Surface") =
  38. {
  39. Language = "GLSL";
  40. Pass =
  41. {
  42. Fragment =
  43. {
  44. layout(location = 0) in vec2 uv0;
  45. layout(location = 1) in vec3 tangentToWorldZ;
  46. layout(location = 2) in vec4 tangentToWorldX;
  47. layout(binding = 4) uniform sampler2D gAlbedoTex;
  48. layout(binding = 5) uniform sampler2D gNormalTex;
  49. void main()
  50. {
  51. vec3 normal = normalize(texture2D(gNormalTex, uv0).xyz * 2.0f - vec3(1, 1, 1));
  52. vec3 worldNormal = calcWorldNormal(tangentToWorldZ, tangentToWorldX, normal);
  53. GBufferData gbufferData;
  54. gbufferData.albedo = texture2D(gAlbedoTex, uv0);
  55. gbufferData.worldNormal.xyz = worldNormal;
  56. encodeGBuffer(gbufferData, gl_FragData[1], gl_FragData[2]);
  57. // TODO - Just returning a simple ambient term, use better environment lighting later
  58. gl_FragData[0] = vec4(gbufferData.albedo.rgb, 1.0f) * 0.01f;
  59. }
  60. };
  61. };
  62. };
  63. #include "$ENGINE$\Surface.bslinc"