123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #include <scenesrg.srgi>
- #include <viewsrg.srgi>
- #include <Atom/Features/PBR/DefaultObjectSrg.azsli>
- #include <Atom/RPI/ShaderResourceGroups/DefaultDrawSrg.azsli>
- #include <Atom/Features/InstancedTransforms.azsli>
- struct VertexInput
- {
- float3 m_position : POSITION;
- float3 m_normal : NORMAL;
- };
- struct VertexOutput
- {
- float4 m_position : SV_Position;
- float3 m_normal : NORMAL;
- };
- VertexOutput MainVS(VertexInput input, uint instanceId : SV_InstanceID)
- {
- const float4x4 objectToWorldMatrix = GetObjectToWorldMatrix(instanceId);
- VertexOutput output;
- float4 worldPosition = mul(objectToWorldMatrix, float4(input.m_position, 1.0));
- output.m_position = mul(ViewSrg::m_viewProjectionMatrix, worldPosition);
-
- float3x3 objectToWorldMatrixIT = GetObjectToWorldMatrixInverseTranspose(instanceId);
- output.m_normal = mul(objectToWorldMatrixIT, input.m_normal);
- output.m_normal = normalize(output.m_normal);
- return output;
- }
- struct PixelOutput
- {
- float4 m_color : SV_Target0;
- };
- PixelOutput MainPS(VertexOutput input)
- {
- PixelOutput output;
- output.m_color.rgb = normalize(input.m_normal) * 0.5 + 0.5;
- output.m_color.a = 1.0;
- return output;
- }
|