PbrShader.hx 867 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package hrt.shader;
  2. class PbrShader extends h3d.shader.ScreenShader {
  3. static var SRC = {
  4. @global var depthMap : Channel;
  5. @global var occlusionMap : Channel;
  6. @global var hdrMap : Channel;
  7. @global var camera : {
  8. var view : Mat4;
  9. var proj : Mat4;
  10. var position : Vec3;
  11. var projFlip : Float;
  12. var projDiag : Vec3;
  13. var viewProj : Mat4;
  14. var inverseViewProj : Mat4;
  15. var zNear : Float;
  16. var zFar : Float;
  17. @var var dir : Vec3;
  18. };
  19. @global var global : {
  20. var time : Float;
  21. };
  22. function getPositionAt( uv: Vec2 ) : Vec3 {
  23. var depth = depthMap.get(uv);
  24. var uv2 = uvToScreen(uv);
  25. var temp = vec4(uv2, depth, 1) * camera.inverseViewProj;
  26. var originWS = temp.xyz / temp.w;
  27. return originWS;
  28. }
  29. function getPosition() : Vec3 {
  30. return getPositionAt(calculatedUV);
  31. }
  32. };
  33. }