림 라이트란, 역광을 의미한다.

밝은 빛을 등지고 서있으면 물체의 테두리가 밝게 빛나는 현상을 우리는 현실에서도 자주 볼 수 있다.

 

컴퓨터 그래픽스 - Rim Light (역광) (tistory.com)

 

컴퓨터 그래픽스 - Rim Light (역광)

사진 출처 : What is Rim Lighting? - NYIP Photo Articles 위의 사진을 보면, 동물의 테두리 부분이 밝게 빛나는 것을 볼 수 있다.이처럼, 광원을 등지고 있을 때 물체의 테두리가 밝게 빛나는 것을 림라이트

yuu5666.tistory.com

 

위의 게시글에 림라이트에 관한 글을 정리해놓았다.

해당 게시글의 내용을 토대로 림라이트를 적용하였다.

 

struct ERimLight
{
    DirectX::SimpleMath::Vector3 RimColor = { 1.0f, 1.0f, 1.0f };
    float RimPower = 3.0f;
    
    float RimStrength = 3.0f;
    DirectX::SimpleMath::Vector3 Padding;
};

 

먼저, RimLight의 정보를 담은 구조체를 선언해주었다.

 

CreateConstantBuffer(EShaderType::PSShader, L"PixelTest.hlsl", RimLightData);

 

그리고 상수버퍼를 쉐이더에 연결해주었다.

 

float Rim = (1 - dot(EyeDir, _Input.WorldNormal));
Rim = pow(abs(Rim), RimLightPower);

float3 RimLight = Rim * RimLightStrength * RimLightColor;
Color.rgb += RimLight;

 

쉐이더에 블린 퐁 쉐이딩을 모두 적용한 뒤, 림라이트를 계산하여 물체의 색상에 더해주었다.

 

결과는 아래와 같다.

 

 

구현 자체가 까다로운 효과가 아니다 보니, 쉽게 적용할 수 있었다.

+ Recent posts