Start of 3d renderer integration

This commit is contained in:
Simon Lübeß
2022-05-04 18:38:59 +02:00
parent 412d0ea965
commit 2817c5b1a1
16 changed files with 733 additions and 14 deletions
@@ -0,0 +1,73 @@
cbuffer SceneConstants
{
float4x4 ViewProjection = float4x4(1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1);
}
cbuffer ObjectConstants
{
float4x4 Transform;
}
cbuffer Constants
{
float4 BaseColor = float4(1, 0, 1, 1);
//float3 LightDir = float3(0, 1, 0);
}
struct VS_IN
{
float3 Position : POSITION;
float3 Normal : NORMAL;
};
struct PS_IN
{
float4 Position : SV_POSITION;
float3 WorldPosition : TEXCOORD0;
float3 Normal : NORMAL;
};
PS_IN VS(VS_IN input)
{
PS_IN output;
float4 worldPosition = mul(Transform, float4(input.Position, 1));
output.Position = mul(ViewProjection, worldPosition);
output.WorldPosition = worldPosition.xyz / worldPosition.w;
output.Normal = mul((float3x3)Transform, input.Normal);
return output;
}
struct PS_OUT
{
float4 Color : SV_TARGET0;
float4 Normal : SV_TARGET1;
float4 Position : SV_TARGET2;
};
PS_OUT PS(PS_IN input)
{
input.Normal = normalize(input.Normal);
float f = distance(input.Normal, input.Normal);
//float shading = dot(LightDir, input.Normal);
//float shading = dot(LightDir, LightDir) + 1;
//shading = clamp(shading, 0.0f, 1.0f);
//return float4(BaseColor.rgb * shading, 1.0f);
PS_OUT output = (PS_OUT)0;
output.Color = BaseColor;
output.Normal = float4(input.Normal, 1);
output.Position = float4(input.WorldPosition, 1);
return output;
}
#effect[VS=VS,PS=PS]