| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /*
- * 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 <viewsrg.srgi>
- #include <Atom/Features/PBR/DefaultObjectSrg.azsli>
- #include <Atom/RPI/ShaderResourceGroups/DefaultDrawSrg.azsli>
- #include <Atom/Features/VertexUtility.azsli>
- #define ENABLE_DEBUG_MODIFY_OUTPUT 0
- #if MATERIALPIPELINE_SHADER_HAS_PIXEL_STAGE
-
- #define MATERIAL_HAS_UVS 0
- struct VsInput
- {
- float3 position : POSITION;
- float3 normal : NORMAL;
- };
- struct VsSystemValues
- {
- uint m_instanceId;
- };
- struct VsOutput
- {
- precise linear centroid float4 position : SV_Position;
- float3 normal: NORMAL;
- float3 worldPosition : UV0;
- };
-
- VsOutput EvaluateVertexGeometry(VsInput IN, VsSystemValues SV)
- {
- VsOutput output;
- output.worldPosition = LocalSpaceToWorldSpace(IN.position, SV.m_instanceId);
- output.position = WorldSpaceToClipSpace(output.worldPosition);
- output.normal = IN.normal;
- return output;
- }
-
- class PixelGeometryData
- {
- float3 positionWS;
- float3 vertexNormal;
- };
- PixelGeometryData EvaluatePixelGeometry(VsOutput IN, bool isFrontFace)
- {
- PixelGeometryData geoData;
- geoData.positionWS = IN.worldPosition;
- geoData.vertexNormal = normalize(IN.normal);
- return geoData;
- }
- #include <Atom/Feature/Common/Assets/Shaders/Materials/BasePBR/BasePBR_SurfaceData.azsli>
- Surface EvaluateSurface(VsOutput IN, PixelGeometryData geoData)
- {
- Surface surface;
- surface.position = geoData.positionWS;
- surface.vertexNormal = geoData.vertexNormal;
- surface.normal = geoData.vertexNormal;
- float3 baseColor = float3(1,1,1);
- float specularF0Factor = 0.5;
- float metallic = 1;
- surface.SetAlbedoAndSpecularF0(baseColor, specularF0Factor, metallic);
- surface.roughnessLinear = 0;
- surface.CalculateRoughnessA();
- return surface;
- }
- #else
- #include <Atom/Feature/Common/Assets/Shaders/Materials/DepthPass_VertexData.azsli>
- #include <Atom/Feature/Common/Assets/Shaders/Materials/DepthPass_VertexEval.azsli>
- #endif
|