| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors.
- // All rights reserved.
- // Code licensed under the BSD License.
- // http://www.anki3d.org/LICENSE
- #pragma anki technique ForwardLegacy vert pixel
- #include <AnKi/Shaders/ForwardShadingCommon.hlsl>
- #include <AnKi/Shaders/Functions.hlsl>
- #pragma anki struct AnKiLocalConstants
- #pragma anki member Vec3 m_fogColor
- #pragma anki member F32 m_fogAlphaScale
- #pragma anki member F32 m_fogDistanceOfMaxThikness
- #pragma anki struct_end
- struct VertIn
- {
- U32 m_svVertexId : SV_VERTEXID;
- };
- struct VertOut
- {
- Vec4 m_svPosition : SV_POSITION;
- F32 m_zVSpace : ZVSPACE;
- nointerpolation U32 m_constantsOffset : CONSTANTS_OFFSET;
- };
- #if ANKI_VERTEX_SHADER
- VertOut main(VertIn input)
- {
- VertOut output;
- const GpuScenePerDraw perDraw = getGpuScenePerDraw();
- const GpuSceneMeshLod mesh = g_meshLods[perDraw.m_meshLodIndex];
- const Mat3x4 worldTransform = g_transforms[perDraw.m_worldTransformsIndex];
- const UnpackedMeshVertex vertex = loadVertex(mesh, input.m_svVertexId, false);
- const Vec3 worldPos = mul(worldTransform, Vec4(vertex.m_position, 1.0));
- output.m_svPosition = mul(g_globalConstants.m_viewProjectionMatrix, Vec4(worldPos, 1.0));
- const Vec3 viewPos = mul(g_globalConstants.m_viewTransform, Vec4(worldPos, 1.0));
- output.m_zVSpace = viewPos.z;
- output.m_constantsOffset = perDraw.m_constantsOffset;
- return output;
- }
- #endif // ANKI_VERTEX_SHADER
- #if ANKI_PIXEL_SHADER
- PixelOut main(VertOut input)
- {
- PixelOut output = (PixelOut)0;
- const AnKiLocalConstants localConstants = loadAnKiLocalConstants(g_gpuScene, input.m_constantsOffset);
- fog(localConstants.m_fogColor, localConstants.m_fogAlphaScale, localConstants.m_fogDistanceOfMaxThikness, input.m_svPosition, input.m_zVSpace,
- output);
- return output;
- }
- #endif // ANKI_PIXEL_SHADER
|