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랑 섞어야함
'게임 개발 > 유니티' 카테고리의 다른 글
유니티 컴퓨트 쉐이더 참고자료 (0) | 2024.06.09 |
---|---|
Flocking Algorithm 군집 알고리즘 - Unity (0) | 2024.05.14 |
20240402 Unity - 쉐이더(Shader) (0) | 2024.04.02 |
20240321 Unity - UI Scroll View Inventory UI (0) | 2024.03.22 |
20240320 Unity - UI Slider, Input Field 싱글톤 활용 AudioPlayer UI (0) | 2024.03.20 |