Unity(122)
-
[Unity] URP 셰이더 커스텀 노드로 Light Vector 노드 만들기
먼저, [Custom Function] 노드의 Graph Inspector를 정리하면, Precision: 값의 정밀도이다.Inherit: 이전 노드에서 상속받는 정밀도Single: Float과 같으며 32bit 정밀도이다. 높은 품질과 정밀도를 가진다.Half: 16bit 정밀도로 Single보다는 조금 떨어진다.Use Graph Precision: Graph Setting에서 결정한 정밀도를 사용하는 옵션이다. HLSL 함수 이름이 Precision에 맞춰서 자동으로 접미어가 붙기 때문에 출력 변수의 단위가 이 Precision에 맞지 않으면 에러가 난다.Preview: 2D/3D 어떤 것으로 볼지를 결정한다.Inputs/Outputs: 다른 노드의 Input과 Output처럼 입력과 출력값이다.T..
2023.07.18 -
[Unity] URP 셰이더 Normal Vector 정리
[Normal Vector] 노드에는 아래 사진과 같이 여러 종류의 Space를 설정할 수 있다. 책에 나온 예제 오브젝트로 그 차이를 정리하려고 한다. Object Space오브젝트가 스스로 가지고 있는 공간이며 피봇점의 좌표이다. 오브젝트를 회전하면 좌표도 같이 회전한다. 오브젝트 기준으로 무언가를 해야 할 때 쓰인다. 두개골 윗부분이 녹색인 건 어느 방향으로 회전시켜도 계속 녹색을 유지한다. View Space카메라 기준의 좌표이며 오브젝트를 회전시키더라도 카메라 기준으로 좌표가 만들어진다. 카메라 방향을 바라보는 면은 언제나 파란색(Z축)이다. 내가 바라보는 방향을 기준으로 어떤 것을 할 때 쓰인다. World Space월드 기준으로 좌표가 결정되기 때문에 화면을 회전시켜도 월드 좌표의 ..
2023.07.18 -
[Unity] URP 셰이더 돌이 물에 젖고 마르는 셰이더 만들기
물체가 물에 젖게 되면 표면에 정반사가 늘고, 난반사가 줄어들어 어두워지고, 표면의 색상은 물 층 내부에서 전반사로 전해진다. 빛이 물 층을 통과하여 표면까지 도달하는 빛의 양이 줄어들어 어둡게 보인다. [Unity] URP 셰이더 Detail MapDetail Map은 근접했을 때 흐려지는 텍스쳐의 디테일을 보완하고자 만든 기법이다. 책의 예제 돌 오브젝트와 텍스쳐 오브젝트를 보면, 일반적으로 셰이더를 적용했을 때는 물체에 가까이 갔을 때lightbakery.tistory.com이전 글의 셰이더에 이어진다. Detail Map을 위해 Blend 되었던 Base Map을 [Multiply]로 곱하여 어둡게 했고, Smoothness를 0.8로 높였더니 어둡고 반사가 잘되는 젖어 보이는 돌처럼 보이게..
2023.07.17 -
[Unity] URP 셰이더 Detail Map
Detail Map은 근접했을 때 흐려지는 텍스쳐의 디테일을 보완하고자 만든 기법이다. 책의 예제 돌 오브젝트와 텍스쳐 오브젝트를 보면, 일반적으로 셰이더를 적용했을 때는 물체에 가까이 갔을 때 텍스쳐 해상도의 한계 때문에 흐리게 보이게 된다. 이걸 해결하기 위해서 텍스쳐의 사이즈를 크게 하면 그것 또한 문제가 될 수 있다. 이러한 현상을 해결하기 위해 Detail Map을 사용한다. 예제에 있는 DirtDetail 텍스쳐를 가로세로 20씩 Tiling 하고 Base Map 텍스쳐와 [Blend] 계산을 한다. Detail Map은 결과물의 밝기에 변화를 주지 않게 sRGB 옵션을 끈다. 일반적으로 Detail Map은 원본 이미지의 밝기를 해치지 않기 위해 회색 이미지를 사용하는 것이 일반적이라..
2023.07.17 -
[Unity] URP 셰이더 Height Map(Parallax Mapping)
Height Map-높이를 저장하고 있는 그레이 스케일의 텍스쳐를 통칭하는 의미이다. Lit Shader에서는 Height Map을 Parallax의 맵으로 사용하고 있다. 실제로 버텍스의 위치를 조절해 주는 흑백 높이맵으로 사용할 수도 있고, 유니티에서는 내장된 Terrain의 높낮이를 저장하고 조절해 주는 16비트 텍스쳐로 사용되기도 한다. Parallax Mapping(시차 매핑)-시야각에 따라 UV를 이동시켜 깊이감을 흉내내는 기법. 다음은 책에 있는 예제이며 Base Map, Normal Map, Smoothness, Ambient Occlusion 총 4개의 텍스쳐를 적용한 모습이다. Height Map을 이용해서 깊이감을 더 줄 수 있다. [Parallax Mapping] 노드를 추..
2023.07.17 -
[Unity] URP 셰이더 픽셀 셰이더 5.0 샘플러 오류 해결법 (Sampler State 노드)
셰이더를 만들다 보면, 많은 텍스쳐를 사용하여 오류가 날 수 있다. 매뉴얼에는 Direct3D 11은 한 셰이더에 최대 128개의 텍스쳐와 16개의 샘플러를 지원한다고 되어있지만, 샘플링이 API 한계를 넘어서면 콘솔 창에 다음과 같은 오류 문구가 나온다. "Shader error in 'Master': maximum ps_5_0 sampler register index (16) exceeded at line 358 (on d3d11)" 이 경우 샘플러 상태를 공유해서 사용하는 샘플링 수를 줄이면 된다. Linear: 텍스쳐가 화면에서 확대/축소될 때, 주변 픽셀과 블렌딩 되면서 부드러워진다.Point: 블렌딩 되지 않는다.Trilinear: Linear와 기본적으로 같지만 Mipmap 변화가 될..
2023.07.14