응애맘마조

230607 강의 본문

공부/3D강의

230607 강의

TH.Wert 2023. 6. 7. 19:47

오늘은 강의 초기에 했었던 구 만들기로 돌아가서 광원에 대해 수업을 했었습니다.

 

먼저 정점 타입은 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 타입이 들어갑니다. 이렇게 하면 위에서 조명을 쏘는 것 같은 효과로 회전을 하고 크기를 변경해도 일정 위치에서만 밝은 효과가 나오고 조명을 받지 못하는 부분은 검은색으로 표시가 됩니다.

동영상을 보면 알 수 있는 것처럼 일정 위치에서 조명을 쐈을 때 맞는 부분만 색깔이 표시되고 그 이외의 부분에서는 검은색으로 표시되는 것이 확인되었습니다.

 

읽어주셔서 감사합니다.

'공부 > 3D강의' 카테고리의 다른 글

230609 강의  (1) 2023.06.11
230608 강의  (0) 2023.06.08
회전보간  (0) 2023.06.05
230602 강의  (0) 2023.06.05
230601 강의  (0) 2023.06.01