1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- * 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
- *
- */
- #define ENABLE_DEBUG_MODIFY_OUTPUT 0
- #if MATERIALPIPELINE_SHADER_HAS_PIXEL_STAGE
-
- #define MATERIAL_HAS_UVS 0
- VsOutput EvaluateVertexGeometry(
- float3 position,
- float3 normal,
- float4 tangent,
- float2 uv0,
- float2 uv1,
- uint instanceId)
- {
- VsOutput output;
- // TODO: this assumes a forward+ - pipeline
- VsSystemValues SV;
- SV.m_instanceId = instanceId;
- float4x4 objectToWorld = GetObjectToWorldMatrix(SV);
- float4 worldPosition = mul(objectToWorld, float4(position, 1.0));
- float4x4 viewProjectionMatrix = GetViewProjectionMatrix(SV);
- output.worldPosition = worldPosition.xyz;
- output.position = mul(viewProjectionMatrix, worldPosition);
- output.normal = normal;
- return output;
- }
- VsOutput EvaluateVertexGeometry(VsInput IN, VsSystemValues SV, const MaterialParameters params)
- {
- VsOutput output;
- float4x4 objectToWorld = GetObjectToWorldMatrix(SV);
- float4 worldPosition = mul(objectToWorld, float4(IN.position, 1.0));
- float4x4 viewProjectionMatrix = GetViewProjectionMatrix(SV);
- output.worldPosition = worldPosition.xyz;
- output.position = mul(viewProjectionMatrix, worldPosition);
- output.normal = IN.normal;
- return output;
- }
-
- PixelGeometryData EvaluatePixelGeometry(VsOutput IN, VsSystemValues SV, bool isFrontFace, const MaterialParameters params)
- {
- PixelGeometryData geoData;
- geoData.positionWS = IN.worldPosition;
- geoData.vertexNormal = normalize(IN.normal);
- [unroll]
- for(uint i = 0; i < UvSetCount; ++i)
- {
- geoData.uvs[i] = float2(0, 0);
- }
- return geoData;
- }
- Surface EvaluateSurface(VsOutput IN, PixelGeometryData geoData, const MaterialParameters params)
- {
- 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_VertexEval.azsli>
- #endif
|