전체 글63 URP Shader Study #9 - UV 정보를 픽셀 셰이더에 출력, Texture Splatting Frame Debugger 실제 Transparent는 뎁스버퍼에 쓰지 않는다. Depth PrePass 라고 반투명을 뎁스 프리패스에 한번 더 그리는 명령어가 있는데 urp는 아직 지원을 안하고 있다. .. UV 정보를 픽셀 셰이더에 출력 버텍스 버퍼에 uv를 선언해준다 (보간기에도 동일) float2 uv : TEXCOORD0; 버텍스 버퍼에 선언한 UV를 읽어와서 버텍스 셰이더에 맵핑해준다 o.uv = v.uv.xy; 이제 픽셀셰이더에서 볼 수 있게끔 호출해주자 float4 Color = float4(i.uv.x, i.uv.y, 0, 1); return Color; z값은 필요없으니 0 alpha 값은 보여야하니 1 짠 자 이걸 UV값중 U만 표현하다고 하면 어떤식으로 해야할까? 바로 픽셀 셰이더 .. 2023. 12. 3. URP Shader Study #8 - Alpha To Coverage Alpha To Coverage "Alpha To Coverage"는 MSAA(Multi-Sample Anti-Aliasing)를 사용할 때, 알파 채널을 가진 텍스처에도 안티 앨리어싱(AA)을 적용하는 기술이다. MSAA는 보통 메쉬의 외곽선에만 AA를 적용한다. 즉, 메쉬의 가장자리는 부드럽게 처리되지만, 텍스처 내부의 이미지는 AA 처리가 안 된다. 알파 채널을 가진 텍스처의 경우, 그 이미지 내부에도 AA를 적용하고 싶을때 "Alpha To Coverage" 기능을 사용하게 된다. 이를 통해 텍스처 내부의 이미지도 가장자리가 부드럽게 처리된다. MSAA같은 경우는 포워드 렌더링 방식에서만 사용하고 AA처리를 할때 Alpha채널에 있는 텍스쳐는 AA를 먹히질 않는다. AlphaToMask를 키면 A.. 2023. 12. 2. URP Shader Study #7 - Zwrite, ZTest, Offset Zwrite 픽셀이 뎁스버퍼에 작성되는지 제어하는 것임 기본은 이 깊이를 그려내는 텍스쳐에 작성하는데 불투명 오브젝트 같은 경우는 제어가 안되는 경우가 있어서 이걸 작성해줘야 한다. #6에서 했던 코드를 가지고 와서 Pass 부분에 Zwrite off 를 추가해주자. Blend [_SrcBlend] [_DstBlend] Cull [_Cull] Zwrite off Name "Universal Forward" Tags { "LightMode" = "UniversalForward" } 그러면 원래 뒷 부분을 정확하게 못 그려주던 셰이더가 말잘듣고 그려준다 (우와~) 물론 이것도 전에 했던 것 처럼 토글로 제어가 가능하다. 프로퍼티스 [Enum(Off, 0, On, 1)] _ZWrite("ZWrite", Flo.. 2023. 12. 2. URP Shader Study #6 - Transparent Shader + Culling Transpaent 부터는 유니티가 자동으로 정렬해주지 않아서 사용자가 직접 정렬을 해줘야만 한다. 겹치는 픽셀을 픽셀을 어떻게 그려야하는지에 대한 선언을 해줘야한다. 프로퍼티스에 제어해줄 것을 꺼내준다 _MainTex("Main Texture", 2D) = "white" {} _AlphaCut("Alphacut", Range(0,1)) = .5 그 다음 Tags 에서 이것은 Transpaent 이라고 알려주자 "RenderPipeline"="UniversalPipeline" "RenderType"="Transparent" "Queue"="Transparent" 인풋 어셈블리 레벨에서 UV 쓸거니까 선언해주고 float2 uv : TEXCOORD0; 지금 필요한 변수들을 꺼내어보자. float _Alph.. 2023. 12. 2. 이전 1 2 3 4 5 6 ··· 16 다음