ForwardShadingFog.ankiprog 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright (C) 2009-2022, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma anki mutator ANKI_TECHNIQUE 3
  6. #include <AnKi/Shaders/ForwardShadingCommon.glsl>
  7. struct PerDraw
  8. {
  9. Mat3x4 m_ankiTransform;
  10. ANKI_RP Vec3 m_fogColor;
  11. ANKI_RP F32 m_fogAlphaScale;
  12. ANKI_RP F32 m_fogDistanceOfMaxThikness;
  13. };
  14. #pragma anki reflect AnKiLocalUniforms
  15. #pragma anki struct AnKiLocalUniforms
  16. #pragma anki member ANKI_RP Vec3 m_fogColor
  17. #pragma anki member ANKI_RP F32 m_fogAlphaScale
  18. #pragma anki member ANKI_RP F32 m_fogDistanceOfMaxThikness
  19. #pragma anki struct end
  20. layout(set = MATERIAL_SET_GLOBAL, binding = MATERIAL_BINDING_GLOBAL_UNIFORMS) uniform b_ankiGlobalUniforms
  21. {
  22. MaterialGlobalUniforms u_global;
  23. };
  24. layout(set = MATERIAL_SET_LOCAL, binding = MATERIAL_BINDING_RENDERABLE_GPU_VIEW) uniform b_renderableGpuViews
  25. {
  26. RenderableGpuView u_renderableGpuViews[1];
  27. };
  28. layout(set = MATERIAL_SET_LOCAL, binding = MATERIAL_BINDING_LOCAL_UNIFORMS, std430) buffer b_localUniforms
  29. {
  30. U32 u_localUniforms[];
  31. };
  32. #pragma anki start vert
  33. layout(location = 0) out F32 out_zVSpace;
  34. void main()
  35. {
  36. const Vec3 worldPos = u_renderableGpuViews[0].m_worldTransform * Vec4(in_position, 1.0);
  37. gl_Position = u_global.m_viewProjectionMatrix * Vec4(worldPos, 1.0);
  38. const Vec3 viewPos = u_global.m_viewMatrix * Vec4(worldPos, 1.0);
  39. out_zVSpace = viewPos.z;
  40. }
  41. #pragma anki end
  42. #pragma anki start frag
  43. layout(location = 0) in F32 in_zVSpace;
  44. void main()
  45. {
  46. const AnKiLocalUniforms localUniforms = loadAnKiLocalUniforms(u_localUniforms, 0u);
  47. fog(localUniforms.m_fogColor, localUniforms.m_fogAlphaScale, localUniforms.m_fogDistanceOfMaxThikness, in_zVSpace);
  48. }
  49. #pragma anki end