게임 개발/유니티

20240403 Unity - 유니티 쉐이더 (Shader)

싹난 감자 2024. 4. 8. 10:17

Unity Surface Shader는 파이프라인에서 사용자 함수를 사용할 때 사용하지 못하게 되는 고정 함수들

(월드 변환, 빛 계산 등)을 자동으로 해줌

 

struct Input

float3 viewDir: 바라보는 방향

float4 color:COlOR : 버텍스 컬러

float4 screenPos: 스코린 공간에서의 위치

float3 worldPos: 월드 공간에서의 위치

float3 worldNormal: 월드 노멀 벡터

flaot3 worldRefl: 월드 반사 벡터

 

Rendering Path

Forward와 Deferred

조명 계산하는 타이밍이 다름

 

Forward

컬링 후 조명 계산

조명 계산 후 클리핑(안보이는 화면 자르기)

화면에 보이든 안보이든 파이프 라인에 들어가면 조명계산이 들어감

조명이 많으면 연산량이 많아짐

 

Deferred

조명 계산을 최대한 미루고 마지막에 보여지는 화면에 (렌더타겟) 조명 계산을 함

픽셀 개수 당 조명 계산. 조명의 개수가 달라도 연산량이 같음

빠름

단, 메모리를 아주 많이 사용함

Deferred로 처리하기 위해 G버퍼가 생기고 노말 값을 다 저장해둠

해상도가 높을수록 메모리 사용량이 엄청 늘어남

반투명 조명 계산을 못함

반투명 처리를 하려면 Foward랑 섞어야함