You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.8 KiB
Plaintext
57 lines
1.8 KiB
Plaintext
// {BEGIN_LICENSE}
|
|
/*
|
|
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
|
* its licensors.
|
|
*
|
|
* For complete copyright and license terms please see the LICENSE at the root of this
|
|
* distribution (the "License"). All use of this software is governed by the License,
|
|
* or, if provided, by the license below or the license accompanying this file. Do not
|
|
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
*
|
|
*/
|
|
// {END_LICENSE}
|
|
|
|
#pragma once
|
|
|
|
#include <viewsrg.srgi>
|
|
#include <Atom/RPI/Assets/ShaderLib/Atom/RPI/ShaderResourceGroups/DefaultObjectSrg.azsli>
|
|
#include <Atom/RPI/Assets/ShaderLib/Atom/RPI/TangentSpace.azsli>
|
|
|
|
struct VertexInput
|
|
{
|
|
float3 m_position : POSITION;
|
|
float3 m_normal : NORMAL;
|
|
float4 m_tangent : TANGENT;
|
|
float3 m_bitangent : BITANGENT;
|
|
float2 m_uv : UV0;
|
|
};
|
|
|
|
struct VertexOutput
|
|
{
|
|
float4 m_position : SV_Position;
|
|
float3 m_normal : NORMAL;
|
|
float3 m_tangent : TANGENT;
|
|
float3 m_bitangent : BITANGENT;
|
|
float2 m_uv : UV0;
|
|
float3 m_view : VIEW;
|
|
};
|
|
|
|
VertexOutput CommonVS(VertexInput input)
|
|
{
|
|
float4x4 objectToWorld = ObjectSrg::GetWorldMatrix();
|
|
float3x3 objectToWorldIT = ObjectSrg::GetWorldMatrixInverseTranspose();
|
|
|
|
VertexOutput output;
|
|
float3 worldPosition = mul(objectToWorld, float4(input.m_position, 1)).xyz;
|
|
output.m_position = mul(ViewSrg::m_viewProjectionMatrix, float4(worldPosition, 1.0));
|
|
|
|
output.m_uv = input.m_uv;
|
|
|
|
output.m_view = worldPosition - ViewSrg::m_worldPosition;
|
|
|
|
ConstructTBN(input.m_normal, input.m_tangent, input.m_bitangent, objectToWorld, objectToWorldIT, output.m_normal, output.m_tangent, output.m_bitangent);
|
|
|
|
return output;
|
|
}
|