|
???Shader?????????????????
????????
????????????????1???????????????
- float4 frag(v2f i) : SV_Target
- {
- float4 color = float4(i.uv.r, i.uv.g, 1, 1);
- return color;
- }
复制代码
????????
??
???????????????????????????????????????????????????...??????????????
??
?????????unity????????????????????????????
?????????
?????????????PS?????????????PNG?????????????????????????????????????????????
??SubShader????????Properties???????????MainTexture??????
- Properties{
- _MainTex("Main Texture", 2D) = "white" {}
- }
复制代码
????????????????CGPROGRAM?????????????????????CGPROGRAM?????????
sampler2D _MainTex;
????sampler2D???GLSL????????????2D??
https://www.khronos.org/opengl/wiki/Sampler_(GLSL)
?????frag?????tex2D????????????????????????????????????????????????????????????????????????uv???????
- float4 frag(v2f i) : SV_Target
- {
- return tex2D(_MainTex, i.uv);
- }
复制代码
??????????????????????????
???????????????????
??????????????????????PNG?????????????????????????tex2D????????????????uv???????????????????????????????tex2D??????????????????????
????????????????Transparent Blend?????????????shader??????????????????????????????
https://docs.unity3d.com/Manual/SL-Blend.html
???????????Alpha Blend??????CGPROGRAM????????
Blend SrcAlpha OneMinusSrcAlpha
??????????????????????????1 - ???????????????????
OutColor = SrcColor * ScrAlpha + DstColor * (1 - SrcAlpha)
????????????????????????????????????????????????????????????????????????
???????SubShader?tag?????shader????????????????????????????????
- Tags
- {
- "Queue" = "Transparent"
- }
复制代码
??????????????????????????????????????????????????????
???????????????????????
???shader???
- Shader "Custom/ShaderLearning"
- {
- Properties{
- _MainTex("Main Texture", 2D) = "white"
- }
- SubShader
- {
- Tags
- {
- "Queue" = "Transparent"
- }
- Pass
- {
- Blend SrcAlpha OneMinusSrcAlpha
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- sampler2D _MainTex;
- #include "UnityCG.cginc"
- struct appdata
- {
- float4 vertex : POSITION;
- float2 uv: TEXCOORD0;
- };
- struct v2f
- {
- float4 vertex : SV_POSITION;
- float2 uv: TEXCOORD1;
- };
- v2f vert(appdata v)
- {
- v2f o;
- o.vertex = UnityObjectToClipPos(v.vertex);
- o.uv = v.uv;
- return o;
- }
- float4 frag(v2f i) : SV_Target
- {
- return tex2D(_MainTex, i.uv);
- }
- ENDCG
- }
- }
- }
复制代码
?????
?????https://zhuanlan.zhihu.com/p/86096949
|
|