[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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바