응애맘마조
230607 강의 본문
오늘은 강의 초기에 했었던 구 만들기로 돌아가서 광원에 대해 수업을 했었습니다.
먼저 정점 타입은 PCN으로 Position, Color, Normal입니다.
#include "Common.hlsl"
struct VertexInput
{
float4 Position : POSITION0;
float4 Color : COLOR0;
float4 Normal : NORMAL0;
};
struct PixelInput
{
float4 Position : SV_POSITION;
float4 Color : COLOR0;
float4 Normal : NORMAL0;
};
PixelInput VS(VertexInput input)
{
PixelInput output;
output.Color = input.Color;
output.Position = mul(input.Position, World);
output.Position = mul(output.Position, ViewProj);
input.Normal.w = 0.0f;
output.Normal = mul(input.Normal, World);
return output;
}
float4 PS(PixelInput input) : SV_TARGET
{
//world space light
float3 light = normalize(-float3(1, -1, 1));
//world space normal
float3 normal = normalize(input.Normal);
float diffuse = saturate(dot(ariel, normal));
return float4((diffuse * input.Color.rgb), 1);
}
hlsl파일입니다. 위에서 말한 대로 PCN 타입이 들어갑니다. 이렇게 하면 위에서 조명을 쏘는 것 같은 효과로 회전을 하고 크기를 변경해도 일정 위치에서만 밝은 효과가 나오고 조명을 받지 못하는 부분은 검은색으로 표시가 됩니다.
동영상을 보면 알 수 있는 것처럼 일정 위치에서 조명을 쐈을 때 맞는 부분만 색깔이 표시되고 그 이외의 부분에서는 검은색으로 표시되는 것이 확인되었습니다.
읽어주셔서 감사합니다.