응애맘마조
230608 강의 본문
광원으로 빛을 비추는 코드에 대해서 했었습니다.
#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;
float3 wPosition : POSITION0;
};
PixelInput VS(VertexInput input)
{
PixelInput output;
output.Color = input.Color;
output.Position = mul(input.Position, World);
output.wPosition = output.Position.xyz;
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(light, normal));
float ambient = 0.3f;
float3 lambert =(diffuse + ambient) * input.Color.rgb;
float3 Reflect = reflect(normalize(float3(1, -1, 1)), normal);
float3 viewDir = normalize(ViewPos.xyz - input.wPosition);
float3 specular = pow(saturate(dot(Reflect, viewDir)), 20.0f) * float3(1, 1, 1);
return float4(lambert + specular, 1);
}
과제로부터 했었던 퐁쉐이딩으로 해서 일정 방향으로 비추게 될 수 있습니다. 광원의 크기는 specular에서 20.0f 말고 다른 값으로 바꾸면 크기를 바꿀 수 있습니다.
읽어주셔서 감사합니다.