Shader - Always Visible - [Tutorial][C#]

Graphics Programming 2019. 4. 25. 22:50
반응형

https://www.youtube.com/watch?v=EthjeNeNTsM

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
Shader "smilejsu/AlwaysVisible"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Color ("Always Visible Color", Color) = (0,0,0,0)
    }
    SubShader
    {
        Tags { "Queue"="Transparent" }
        LOD 100
        
        Pass
        {
            Cull Off
            ZWrite Off
            ZTest Always
            
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            
            struct appdata
            {
                float4 vertex : POSITION;
            };
            
            struct v2f
            {
                float4 vertex : SV_POSITION;
            };
            
            float4 _Color;
            
            v2f vert(appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                return o;
            }
            
            fixed4 frag(v2f i) : SV_Target
            {
                return _Color;
            }
            
            ENDCG
        }
        
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            
 
            #include "UnityCG.cginc"
 
            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };
 
            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
 
            sampler2D _MainTex;
            float4 _MainTex_ST;
 
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                
                return o;
            }
 
            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                
                return col;
            }
            ENDCG
        }
        
        
    }
}
 
 
 

 

Cull , ZWrite, ZTest

https://docs.unity3d.com/kr/current/Manual/SL-CullAndDepth.html

 

ShaderLab: 컬링 및 뎁스 테스트 - Unity 매뉴얼

컬링(Culling)은 보는 사람의 반대 방향을 향하는 폴리곤을 렌더링하지 않는 최적화 방법입니다. 모든 폴리곤에는 앞면과 뒷면이 있습니다. 컬링은 대부분의 오브젝트가 닫혀있다는 점을 이용합니다. 큐브가 있는 경우, 보는 사람과 반대 방향을 향하는 면은 보이지 않습니다. 보는 사람이 있는 방향을 향하는 면이 항상 그 앞에 있기 때문입니다. 따라서 반대 방향을 향하는 면은 그리지 않아도 됩니다. 따라서 후면 컬링이라고 합니다.

docs.unity3d.com

알파소팅 

https://www.slideshare.net/jpcorp/5-10351002

 

5강 알파와알파소팅

Alpha / Alpha sorting

www.slideshare.net

https://docs.microsoft.com/ko-kr/windows/desktop/direct3dhlsl/dx-graphics-hlsl-semantics

 

Semantics - Windows applications

A semantic is a string attached to a shader input or output that conveys information about the intended use of a parameter.

docs.microsoft.com

 

반응형

'Graphics Programming' 카테고리의 다른 글

셰이더 시맨틱  (0) 2019.04.27
[pdf] Cg-3.1_April2012_ReferenceManual  (0) 2019.04.02
[pdf] CgUsersManual  (0) 2019.04.02
Unity Shader Study Day-01  (0) 2019.03.31
: