[DirectX 11] Rim Lighting

2022. 4. 25. 11:58·Graphics

Rim Lighting

- 프로젝트 진행중 아트측 요청으로 배경과 캐릭터 간의 구분을 위해 Rim Lighting을 추가해달라는 요청이 있어서 추가하게 되었다.

- 적용을하다 보니 구분을 위해 사용함과 동시에 Noise Texture를 혼합하여 피격 효과나 프로젝트에서 보스의 분신을 생성할때 사용하면 나쁘지 않겠다는 생각이 들었다.

- 일단 Rim Light란 Lembert 공식에서 ( N dot L )에서 Light Vector 대신 View Vector를 활용하여 1-( N dot V  )로 값을 뒤집어 외곽선을 뚜렷하게 보이게 하는 효과이다.

- 결국 Rim Light는 역광에서 나온 빛이 반사되어 보인다고 생각하면 될 것 같다.

- 해당 Rim Light를 자유롭게 쓰기 위해 너비값, 강도, 색상을 설정하여 사용하도록 하였다.

 


cbuffer cbMaterial : register(b0)
{
    ...
    
    float gLimLightFactor   : packoffset(c1.w);
    
    float3 gLimLightColor   : packoffset(c2.x);
    float gLimLightWidth    : packoffset(c2.w);
};

// Rim Light Pixel Shader Code..
float rim = 1.0f - max(0, dot(normalW, normalize(gEyePos - pin.PosW)));
rim = smoothstep(1.0f - gLimLightWidth, 1.0f, rim) * gLimLightFactor;

emissive.rgb += gLimLightColor * rim;

- 현재 G-Buffer에서 Emissive 색상에 누적하여 Light Pass에서 추가적으로 색상을 더해준다.

 

적용 영상

Rim Lighting 적용 영상

 

저작자표시 (새창열림)

'Graphics' 카테고리의 다른 글

[DirectX 11] HDRI Sky Light & Sky Cube Baking  (0) 2022.05.25
[DirectX 11] Material Property Block  (0) 2022.05.22
[DirectX 11] Vertex Texture Fetch Skinning Animation Instancing  (0) 2022.04.21
[DirectX 11] Hierarchical Z-Buffer Occlusion Culling  (0) 2022.04.04
[DirectX 11] Fast Picking (Object ID Picking)  (6) 2022.03.29
'Graphics' 카테고리의 다른 글
  • [DirectX 11] HDRI Sky Light & Sky Cube Baking
  • [DirectX 11] Material Property Block
  • [DirectX 11] Vertex Texture Fetch Skinning Animation Instancing
  • [DirectX 11] Hierarchical Z-Buffer Occlusion Culling
KyuHwang
KyuHwang
  • KyuHwang
    DirectX Engine
    KyuHwang
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • C++ (4)
      • CS (0)
      • Graphics (32)
      • DLL (2)
      • Shader (7)
      • Project (4)
      • ETC (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • YouTube
  • 공지사항

  • 인기 글

  • 태그

    Directx11
    Explicit Linking
    rigging chain
    std::is_base_of
    mobile format
    Hash Code
    dll
    Order Independent Transparency
    Implicit Linking
    Define Function
    RunTime Compile Shader
    Shader Reflection
    animation retargeting
    Return Type Operator
    bc format
    Project
    Win API
    nvtt
    texture block compression
    C ++
    Shader Resource 관리
    std::enable_if
    Shader Macro
    Alpha Blending
    hlsl
    shader
    DirectX 2D
    DLL Interface
    animation constraint
    Define Macro
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
KyuHwang
[DirectX 11] Rim Lighting
상단으로

티스토리툴바