| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // Copyright (C) 2009-2022, Panagiotis Christopoulos Charitos and contributors.
- // All rights reserved.
- // Code licensed under the BSD License.
- // http://www.anki3d.org/LICENSE
- #pragma anki mutator ANKI_TECHNIQUE 3
- #include <AnKi/Shaders/ForwardShadingCommon.glsl>
- struct PerDraw
- {
- Mat3x4 m_ankiTransform;
- ANKI_RP Vec3 m_fogColor;
- ANKI_RP F32 m_fogAlphaScale;
- ANKI_RP F32 m_fogDistanceOfMaxThikness;
- };
- #pragma anki reflect AnKiLocalUniforms
- #pragma anki struct AnKiLocalUniforms
- #pragma anki member ANKI_RP Vec3 m_fogColor
- #pragma anki member ANKI_RP F32 m_fogAlphaScale
- #pragma anki member ANKI_RP F32 m_fogDistanceOfMaxThikness
- #pragma anki struct end
- layout(set = MATERIAL_SET_GLOBAL, binding = MATERIAL_BINDING_GLOBAL_UNIFORMS) uniform b_ankiGlobalUniforms
- {
- MaterialGlobalUniforms u_global;
- };
- layout(set = MATERIAL_SET_LOCAL, binding = MATERIAL_BINDING_RENDERABLE_GPU_VIEW) uniform b_renderableGpuViews
- {
- RenderableGpuView u_renderableGpuViews[1];
- };
- layout(set = MATERIAL_SET_LOCAL, binding = MATERIAL_BINDING_LOCAL_UNIFORMS, std430) buffer b_localUniforms
- {
- U32 u_localUniforms[];
- };
- #pragma anki start vert
- layout(location = 0) out F32 out_zVSpace;
- void main()
- {
- const Vec3 worldPos = u_renderableGpuViews[0].m_worldTransform * Vec4(in_position, 1.0);
- gl_Position = u_global.m_viewProjectionMatrix * Vec4(worldPos, 1.0);
- const Vec3 viewPos = u_global.m_viewMatrix * Vec4(worldPos, 1.0);
- out_zVSpace = viewPos.z;
- }
- #pragma anki end
- #pragma anki start frag
- layout(location = 0) in F32 in_zVSpace;
- void main()
- {
- const AnKiLocalUniforms localUniforms = loadAnKiLocalUniforms(u_localUniforms, 0u);
- fog(localUniforms.m_fogColor, localUniforms.m_fogAlphaScale, localUniforms.m_fogDistanceOfMaxThikness, in_zVSpace);
- }
- #pragma anki end
|