본문 바로가기

Lighting

디지털 라이트의 분류 실제 세상의 빛을 그대로 컴퓨터 그래픽으로 표현하는 것은 많은 무리가 따름. 실시간으로 연산해야 하는 게임에서 빛을 가볍게 처리하면서도 상대적으로 품질이 떨어지지 않을 것이냐는 매우 중요한 문제. 또한, 게임은 상당히 많은 종류의 하드웨어에서 구동되기 때문에 쉐이더를 작성하는 사람들은 하드웨어 기기의 특성까지 파악해두어야 함. 그래서 쉐이더는 공부하면 공부할수록 어렵게 느낀다고 함. 대부분의 3D 프로그램이나 엔진은 다음 3가지 종류의 라이트를 기본적으로 지원함.-디렉셔널 라이트(Directional Light)-포인트 라이트(Poing Light)-스팟 라이트(Spot Light) 디렉셔널 라이트(Directional light)디렉셔널 라이트는 직진성을 가진 조명입니다. 이 라이트가 가지고 있는 정보.. 더보기
Blinn-Phong(블린-퐁) 라이팅 만들기 1975년 유타 대학의 부이 통 퐁의 박사 논문에서 발표된 퐁(Phong) 공식은 1977년 제임스 F 블린에 의해 Blinn-Phong 공식으로 개량되었음. 이 공식은 Specular를 가볍게 표현할 수 있는 공식이었고, 유니티에서는 이 Blinn-Phong 공식이 들어 있음 1234567891011121314151617181920212223242526272829Shader "Custom/Blinn-Phong" { Properties{ _MainTex("Albedo (RGB)", 2D) = "white" {} _SpecColor("Specular Color", color) = (1,1,1,1) } SubShader{ Tags{ "RenderType" = "Opaque" } CGPROGRAM#pragma.. 더보기
Lambert(램버트) 라이팅 만들기 유니티 4 이전 시절에 존재하던 가벼운 라이팅 방식인 Lambert 라이팅빛의 음영은 계산하지만, Specular는 계산하지 않는 매우 전통적이고 가벼운 라이팅 공식 현재는 Standard 라이팅 방식. 라이팅 함수에 대한 자세한 내용은 다른 곳에 정의되어 있고 그곳에는 다른 라이팅 방식(구형 라이팅 방식 포함)도 정의되어 있음. 올바른 라이팅 함수 이름만 불러 오면 램버트 라이팅 생성 가능1234567891011121314151617181920212223242526Shader "Custom/Lambert" { Properties{ _MainTex("Albedo (RGB)", 2D) = "white" {} } SubShader{ Tags{ "RenderType" = "Opaque" } CGPROGRAM#.. 더보기
유니티에 내장된 라이팅 구조 우리가 쉐이더를 처음 만들면 자동적으로 생성되는 Standard Shader는 유니티5부터 기본으로 적용된 쉐이더 형태. 이 Standard Shadr의 라이팅은 분명 좋은 라이팅이지만, 물리 기반 쉐이더 라이트이기 때문에 모바일과 같은 저사양 기기에서 구동하기에는 다소 무거움그래서 유니티 내부적으로 유니티 4버전 이전부터 사용하던 라이트 구조도 그대로 구현되어 있음. 이 라이팅은 물리 기반 쉐이더 이전의 다른 3D 프로그램에서도 흔하게 사용되던 구조로 구조체 차이가 있음. 이 라이팅은 물리 기반 쉐이더보다 품질은 떨어질 수 있지만 상대적으로 가볍기 때문에 물리 기반 쉐이더를 사용할 필요 없이 가볍게 처리해야 하는 모바일 프로젝트에 적합한 쉐이더 구조라고 할 수 있음하지만 하드웨어의 성능이 높아지고 유저.. 더보기