본문 바로가기

유니티/Shader Study14

URP Shader Study #10 - Flow map UV Scroll Time에 따라서 움직이는 셰이더 만들기 매우쉽다! (텍스쳐가 있는 셰이더라는 가정) 버텍스 셰이더 쪽에 그냥 무지성으로 타임.x 를 꽃으면 움직인다! VertexOutput vert(VertexInput v) o.uv.x += _Time.x; Mesh uv 방향으로 scroll 되는 shader 제작 유니티 내부에서 사용할 수 있는 함수들이 있다. 대충 참고하면 된다. 델타타임은 셰이더 안에서 작동이 안된다. Flow map을 활용한 uv animation shader 제작 다른 텍스쳐를 활용해서 UV움직임에 임의의 값을 추가해서 변화를 줘보자. 프로퍼티스 [NoScaleOffset] _FlowMap("FlowMap", 2D) = "white" {} //[NoScaleOffset] 2023. 12. 4.
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.