f
공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다.
해당 예제는 유니티의 Built-in 코드를 기반으로 작업하였다.

이것은 수정하기전의 모습이다. World 전체에 Fog Lighting이 적용되지 않는 것이 확인된다.
기존의 코드에서 수정한 부분들
위에서 언급한 Fog 관련 처리 및 include할 HLSL 파일들 수정이 주로 이루어졌다. 기존 코드는 CG기반이기에 HLSL로 수정 작성하면서 필요해진 작업이다. 즉, 본래 사용되었던 내장함수들을 사용할 수 없기 때문에 추가하거나 대체해줄 필요가 있었다.
1. Unity_PI
PI는 우리가 알고있는 파이(x) 즉 3.14이다. URP에서 내장되어있지 않으므로 직접 추가해주었다.
2. UnityObjectToClipPos
공간 변환 관련 행렬들은 URP에도 내장되어있지만 이름이 전부 변경되었다.
UnityObjectToClipPos의 경우 TransformObjectToHClip 로 변경해준다.
3.ComputeFogFactor()
안개(Fog) 효과를 구현할 때 사용하는 내장 함수로, 주어진 깊이 값(Z)를 기반으로 안개의 강도를 계산하며 안개가 카메라로부터의 거리나 깊이에 따라 계산해주는 역할을 한다.
4.unity_ColorSpaceDouble
Unity PI와 마찬가지로 직접 작성해주었다. 컬러스페이스에 따라 색상 보정을 하는 역할을 한다.
이 부분은 아래에 참고한 레퍼런스의 내용대로 작성하였따.
에러가 났던 부분
o.fog_coord = ComputeFogFactor(o.vertex.z);
참고한 블로그대로 작성했을 때, z축을 기준으로 설정하면 화면 전체가 아니라 중앙이 빈 것처럼 적용되는 오류가 있었다.
따라서 나는 fogDensity를 더해주었다. 이는 유니티 내의 fog 세기와 동일하다.
그리고 ColorSpaceDouble의 경우 내장함수인 SRGBToLinear(); 를 사용할 수 있는 것도 확인하였다.
결과물


결국 오브젝트에만 적용되느냐, skybox 전체에 적용되냐의 차이이다
참고자료
Fog가 적용되는 Skybox의 셰이더 만들어보자!
서론 배경 아티스트 분께서 Skybox에 Fog를 표현하고 싶다고 요청한 적이 있다 배경 오브젝트에는 Fog가 걸리지만 그 뒤의 Skybox에는 Fog가 생기지 않아서 위화감이 생긴다는 이유였다 당시의 필자는
wincnt-shim.tistory.com
Pi(π) | Visual Effect Graph | 10.8.0
Pi(π) | Visual Effect Graph | 10.8.0
Pi(π) 메뉴 경로: Operator > Math > Constants > Pi (π) Pi (π) 연산자는 숫자 Pi(π)를 반환합니다. 이는 원의 둘레에 대한 지름의 비율입니다. 연산자 프로퍼티 Output 타입 설명 π float Pi 값입니다. Mathf.PI와
docs.unity3d.com
Unity - Manual: Use built-in shader functions in the Built-In Render Pipeline
'Shader' 카테고리의 다른 글
[Shader] Dithering Shader (0) | 2025.05.09 |
---|---|
[Shader] OPaque Error with Unlit Shader (불투명 쉐이더 문제) (0) | 2025.04.25 |
[Shader] HLSL 작성 숙달을 위한 구조 파악 with Reflection Example (0) | 2025.04.24 |
[Shader] Hologram shader 제작 연습 with HLSL (0) | 2025.04.09 |