본문 바로가기

Game/Unity & C#

unity Lambert & Blinn phong

Lambert(램버트) / Blinn Phong(블린 퐁)

  • 01: 유니티에 내장된 라이팅 구조

    • 물리 기반 쉐이더 (Standard Shader - Metallic pass)

      struct SurfaceOutputStandard {

      fixed3 Albedo; // 반사율 (기본 색상 / 오브젝트의 텍스쳐)

      fixed3 Normal; // 법선 (반사각을 결정하는 면의 방향)

      fixed3 Emission; // 방사 (이 오브젝트가 스스로 생성하는 빛의 양 - 빛의 영향을 받지 않는 색상)

      half Metallic; // 재질이 금속인가 아닌가

      half Smoothness; // 재질이 거친가 매끈한가

      half Occlusion; // 폐색 (차폐되어 어둡게 되는 강도)

      half Alpha; // 투명도 };

    • Lambert & Blinn Phong 라이트

      struct SurfaceOutput { half3 Albedo; // 물체의 기본 색상 half3 Normal; // NormalMap half3 Emission; // 빛의 영향을 받지 않는 색상 half Specular; // Specular의 넓이. 얼마나 넓은 하이라이트가 나오는가. 수치가 높으면 하이라이트가 작아진다. half Gloss; // Specular의 강도. 순수한 Specular의 Opacity 같은 느낌 half Alpha; // 투명도 };

    • 유니티에서 내장되어 있는 라이팅은 총 3가지라고 할 수 있다.

      1. Lambert(램버트)

        • Specular 공식이 없고 단지 빛에 의한 밝고 어두움이 구현된 가벼운 라이트 구조. SurfaceOutput 구조체를 사용한다.

      2. Blinn Phong(블린 퐁)

        • 램버트 공식에 가벼운 Specular 공식인 블링 퐁 공식이 더해진 라이트 구조. Specular 공식은 보는 각도와 조명 각도에 따라 계산된 특정 색의 하이라이트 동그라미로 표현된다. SurfaceOutput 구조체를 사용한다.

      3. Standard(스탠다드)

        • 일명 PBS(물리 기반 쉐이더: Physically Based Shader). 주변 환경을 반사해서 Specular를 구현하며, Diffuse와 Specular가 에너지 보존 법칙에 의해 서로 보완관계를 자동적으로 가지며 Specular의 칼라가 메탈릭 속성에 따라 자동적으로 결정되는 라이트 구조. SurfaceoutputStandard 구조체와 SurfaceOutputStandardSpecular 구조체를 사용한다.

  • 02: Lambert 라이팅 만들기

    • 램버트는 빛의 음영만 계산하고, Specular는 계산하지 않는 매우 전통적이고 가벼운 라이팅 공식이다.

  • 03: Blinn-Phong 라이팅 만들기

    • 1975년 유타 대학의 부이 통 퐁의 박사 논문에서 발표된 퐁(Phong) 공식은 1977년 제임스 F 블린에 의해 Blinn-Phong 공식으로 개량되었다. 이 공식은 Specular를 가볍게 표현할 수 있는 공식이었고, 유니티에서는 이 Blinn-Phong(블린 퐁) 공식이 들어있다.