셰이더(37)
-
[Unity] URP 셰이더 Z Buffer와 반투명(Translucent)
Z Buffer Z Buffer는 픽셀이 얼마나 멀리 있는지 거리 정보를 기록하는 이미지이다. 가장 가까운 곳은 0으로 완전히 검은색, 가장 멀리 있는 곳은 1로 흰색이다. 반투명 폴리곤은 Sorting(거리 순서로 그리는 방식)이나 Z Buffer로도 해결할 수 없는 문제가 있다. Z Buffer의 정밀도는 플랫폼에 따라 다르지만 보통 16비트나 32비트 정밀도를 사용한다. 이 정도면 검은색에서 흰색 사이의 그라데이션 계조가 매우 풍부해서 미세한 거리 차이도 색상으로 구분할 수 있다. 하지만 구분할 수 없을 정도로 비슷한 거리의 폴리곤이면 Z Fighting이 일어나게 된다. 반투명(Translucent) 반투명 재질은 Z Buffer에 기록하는 Z Write를 끄고 렌더링 해야 한다. Z Test는 ..
2023.06.07 -
[Unity] URP 셰이더 Sub Graph, Custom Lighting, Keyword
서브 그래프 유니티 URP에는 원하는 노드들을 커스텀으로 묶어서 저장할 수 있는 '서브 그래프' 기능이 있다. 만들어진 Sub Graph는 Create Node 리스트에서 찾아볼 수 있다. 저장된 이름은 "IsoscelesTrapezoid"이다. Sub Graph의 장점 셰이더 그래프의 가독성이 좋아진다. 그래프의 재활용을 통해 작업 효율이 향상된다. 유지 보수 측면에서 좋다. 특정 기능 서브 그래프가 여기저기 쓰였는데 수정을 해야 한다면 하나만 수정해도 전체에 반영될 수 있다. 셰이더 그래프 커스텀 라이팅 Custom Function 노드 활용 Unlit 셰이더에 라이팅을 적용하려면 [Custom Function] 노드가 필요하다. [Custom Function]은 HLSL 코드를 작성해서 노드의 행동..
2023.06.05 -
[Unity] 텍스쳐와 UV를 이용한 셰이더 (Tiling, Offset, Scrollout)
Tiling & Offset 셰이더로 만들기 Tiling과 Offset 적용을 변수 프로퍼티 추가로 셰이더로 만들 수 있다. [Tiling And Offset]은 유니티 내에 기본 노드가 있어서 추가하여 연결만 해주면 된다. Tiling & Offset_ScrollSpeed ScrollSpeed 변수가 추가된 셰이더이다. Tiling & Offset_ScrollSpeed2 [Tiling And Offset] 노드에서 Offset은 Vector2 타입이라 [Vector 2] 노드를 만들었고 가장 처음 [Time] 노드도 만들었다. [Fraction] 노드는 Time 값이 전달되는 중간에 소수점 이하의 값만 얻어오기 위해 넣는다. Time 값은 0~1 사이에서 계속 증가하다가 0으로 초기화되는 상황을 반복한..
2023.06.05 -
[Unity] URP 셰이더 그래프 기본적인 노드와 응용 (Add/Multiply/Divide/Pow/Saturate/Clamp/Abs)
Add / Multiply / Divide 각각 [Add], [Multiply], [Divide]인데, [Add]는 말 그대로 색상을 더해주는 기능이고 [Multiply]는 함수 기울기가 급격해지도록(여기서는 색상이 급격하게 변하도록) 만들어준다. [Divide]는 [Multiply]의 반대로, [Multiply]에 4를 넣어 기울기가 4배가 된다면, [Divide]에 4를 넣으면 기울기가 0.25배가 된다. Pow Pow는 지수를 말한다. x의 몇 제곱인데, Pow 값이 1 이상이면 흔히 아는 급격하게 기울기가 커지는 그래프가 만들어지지만, Pow 값이 1보다 작다면 서서히 기울기가 작아지는 그래프가 만들어진다. Saturate [Saturate]는 0 이하를 0으로 만들고 1 이상을 1로 만들어주는 ..
2023.06.03 -
[Unity] 간단한 URP 셰이더 그래프 만들기
Opaque HDR 적용하기 URP 프로젝트에서 메테리얼 하나, Unlit Shader Graph 하나를 만들고 캡슐 에셋에 적용한다. Unlit Shader Graph에서 BaseColor 프로퍼티를 하나 만든 후 [Mode]를 [HDR]로 바꾼다. 이후 색을 바꾸면 HDR 색상으로 적용되는 것을 볼 수 있다. 조정 슬라이드 만들기 만약 Unlit 셰이더를 Lit으로 바꾸고 싶다면, 셰이더 그래프 편집 창에서 오른쪽에 보이는 [Graph Inspector]에서 [Material]을 [Lit]으로 바꿔주면 된다. float 프로퍼티를 추가하고 각각 Smoothness, Metallic으로 [Slide] 모드를 적용하면 슬라이드로 원하는 값을 넣을 수 있게 된다. 스페큘러 사용하기 Metallic으로 조절..
2023.06.01 -
[Unity] URP 셰이더 그래프 기초 개념
ShaderGraph URP에서 생성할 수 있는 셰이더 그래프 종류를 볼 수 있다. Lit Shader Graph: 빛을 받고 그림자를 만들 수 있는 셰이더 Unlit Shader Graph: 빛과 무관하게 텍스쳐 그대로 보여주는 셰이더 셰이더 그래프 [Inspector] 창에서 [View Generated Shader]를 누르면 비주얼 스튜디오에서 코드를 볼 수 있다. 마스터 스택은 "Vertex"와 "Fragment"로 분리되어 있는데 각각 Vertex Shader와 Fragment Shader를 말한다. Precision [Graph Inspector]를 보면 [Precision]이라고 정밀도를 선택할 수 있는 메뉴가 있다. Single: float과 같으며 32비트의 매우 높은 고정밀도이다. De..
2023.05.26