Unityで、写真の解像度をコントロールするためのシェーダーを作りました。
コピペベースで作成したため、中身を全て読めないのですが、掲題の通り、シェーダーに紐付けたマテリアルが最優先で一番上に表示されてしまう現象が起きています。表示順位をヒエラルキーの階層と同じくしたいのですが、ご教授いただけますでしょうか。
HLSL
1Shader "Unlit/Transparent Colored Blurred" 2{ 3 Properties 4 { 5 _MainTex ("Base (RGB), Alpha (A)", 2D) = "white" {} 6 _Distance ("Distance", Float) = 0.015 7 } 8 9 SubShader 10 { 11 LOD 100 12 13 Tags 14 { 15 "Queue" = "Transparent" 16 "IgnoreProjector" = "True" 17 "RenderType" = "Transparent" 18 } 19 20 Cull Back 21 Lighting Off 22 ZWrite Off 23 ZTest LEqual 24 Fog { Mode Off } 25 Offset -1, -1 26 Blend SrcAlpha OneMinusSrcAlpha 27 28 Pass 29 { 30 CGPROGRAM 31 #pragma vertex vertexProgram 32 #pragma fragment fragmentProgram 33 34 #include "UnityCG.cginc" 35 36 struct appdata_t 37 { 38 float4 vertex : POSITION; 39 float2 textureCoordinate : TEXCOORD0; 40 fixed4 color : COLOR; 41 }; 42 43 struct vertexToFragment 44 { 45 float4 vertex : SV_POSITION; 46 half2 textureCoordinate : TEXCOORD0; 47 fixed4 color : COLOR; 48 }; 49 50 sampler2D _MainTex; 51 float4 _MainTex_ST; 52 float _Distance; 53 54 vertexToFragment vertexProgram (appdata_t vertexData) 55 { 56 vertexToFragment output; 57 output.vertex = UnityObjectToClipPos(vertexData.vertex); 58 output.textureCoordinate = TRANSFORM_TEX(vertexData.textureCoordinate, _MainTex); 59 output.color = vertexData.color; 60 return output; 61 } 62 63 fixed4 fragmentProgram (vertexToFragment input) : COLOR 64 { 65 float distance = _Distance; 66 fixed4 computedColor = tex2D(_MainTex, input.textureCoordinate) * input.color; 67 computedColor += tex2D(_MainTex, half2(input.textureCoordinate.x + distance , input.textureCoordinate.y + distance )) * input.color; 68 computedColor += tex2D(_MainTex, half2(input.textureCoordinate.x + distance , input.textureCoordinate.y)) * input.color; 69 computedColor += tex2D(_MainTex, half2(input.textureCoordinate.x , input.textureCoordinate.y + distance )) * input.color; 70 computedColor += tex2D(_MainTex, half2(input.textureCoordinate.x - distance , input.textureCoordinate.y - distance )) * input.color; 71 computedColor += tex2D(_MainTex, half2(input.textureCoordinate.x + distance , input.textureCoordinate.y - distance )) * input.color; 72 73 74 75 76 computedColor += tex2D(_MainTex, half2(input.textureCoordinate.x - distance , input.textureCoordinate.y + distance )) * input.color; 77 computedColor += tex2D(_MainTex, half2(input.textureCoordinate.x - distance , input.textureCoordinate.y)) * input.color; 78 computedColor += tex2D(_MainTex, half2(input.textureCoordinate.x , input.textureCoordinate.y - distance )) * input.color; 79 computedColor = computedColor / 9; 80 81 return computedColor; 82 } 83 ENDCG 84 } 85 } 86}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。