유니티 코리아에 무한 감사! 나만 이해하된 돼~ Shader "URPTraining/URPBasic" { Properties { _BaseColor("Tint Color", color) = (1,1,1,1) _BaseMap("Albedo(RGB)", 2D) = "white"{} _SubMap("Sub Texture", 2D) = "black"{} _Lerp("Lerp", Range(0,1)) = .5 } SubShader { Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Opaque" "Queue"="Geometry" } Pass { Name "Universal Forward" Tags { "LightMode" = "UniversalForward"..
docs.unity3d.com/kr/530/Manual/SL-CullAndDepth.html 유니티 - 매뉴얼: ShaderLab: Culling & Depth Testing ShaderLab: Culling & Depth Testing 컬링은 시점과 반대편을 향한 폴리곤을 렌더링하지 않는 최적화입니다. 모든 다각형은 앞면과 뒷면이 있습니다. 컬링은 오브젝트의 대부분이 닫혀있는 사실을 이용합 docs.unity3d.com 쉐이더보다 다른 쪽을 공부하고 있었는데 그냥 간단해 보이길래 한 번 만들어 볼까? 싶어서 쉐이더 코드를 끄적였다. 역시 마음 먹은 건 쉽게 공부하게 되지 않는 것 같다. Properties { _MainTex("Texture", 2D) = "white" {} _Color("Color",..
Shader "Custom/CustomAlphaTestingCutOutShader" { Properties{ //_Color 구문이 없다면 놀랍게도 그림자가 나오지 않는다고 한다. //그러니까 지금 이 쉐이더에서 볼 수 없는 그림자를 그리는 Pass에서 이 인자 값을 사용하는 것으로 예상할 수 있다. _Color("Color", Color) = (1,1,1,1) _MainTex("Albedo (RGB)", 2D) = "white" {} //이 인자 값을 사용하여 텍스쳐에서 0.5를 기준으로 더 밝은 알파는 그리지 않는다. //즉, 알파 테스팅 쉐이더는 반투명 렌더링을 하지 않는다. _Cutoff("Alpha cutoff",Range(0,1)) = 0.5 } SubShader{ //RenderType은 T..
알파를 표현할 수 있는 쉐이더 코드 Shader "Custom/CustomAlphaBlendingShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { //Transparent는 '투명한'을 의미한다. 그러니까 Tag가 Transparent라면 투명한 객체를 그리는데 사용하는 것이다. //Queue는 렌더링을 할 순서를 결정하는 Tag로써, //Transparent에는 3000이라는 값이 포함되어있다. //가장 기본적인 Geometry(2000), 가장 마지막에 그리는 Overlay(4000) 사이의 값이다. //따라서 "Queue" = "Transparent" 라면 불투명 객체 다음, 오버레이 객체 이전에 그려지는 ..
//테크니컬 아티스트를 위한 유니티 쉐이더 스타트업 발췌 Properties{ _Color("Color", Color) = (1,1,1,1) _Size("Out Line Size", float) = 1 } SubShader{ Tags { "RenderType" = "Opaque" } LOD 200 //cull은 '배제'를 의미한다. front를 배제하여 렌더링 하지 않았으니 그릴 것은 면의 뒷면일 뿐이다. //그러니까 면을 뒤집는 것과 같다. (= flip) cull front //여기서 부터가 면을 뒤집고 버텍스를 이동시키는 첫번째 Pass CGPROGRAM #pragma surface surf _Outline vertex:vert noshadow noambient #pragma target 3.0 /..
//테크니컬 아티스트를 위한 유니티 쉐이더 스타트업 발췌알파 블렌딩을 하면 반투명의 객체들이 서로 엉켜 엉망으로 렌더링 되는 경우가 있는데,2Pass를 사용하여 첫 Pass는 z 버퍼에 그리되, 화면엔 렌더링 하지 않는 것으로 문제를 해결할 수 있다고 한다. SubShader{ Tags {"RenderType" = "Transparent" "Queue" = "Transparent"} cull back //Zwrite를 켜서 가려지는 부분은 그리지 않도록 한다. zwrite on //하지만 화면에는 아무것도 그리지 않는다. ColorMask 0 //1Pass CGPROGRAM #pragma surface surf _DrawZBufferButNoDraw noambient noforward..