Unity Shader分享

利用全景图创建一个天空球

2018-01-29  本文已影响25人  只想单纯的码代码

废话不说,先上效果图

image.png image.png
  1. 创建一个3D球体,然后位置最好位于坐标原点。
  2. 然后将你事先准备的全景图贴在这个球体上,unity会自动创建材质。球体的控制面板上也会出现shader组件
image.png
  1. 然后创建一个shader脚本。
Shader "Custom/InsideVisible" {
    Properties {  
    _MainTex ("Base (RGB)", 2D) = "white" {}  
}  
  
SubShader {  
    Tags { "RenderType"="Opaque" }  
    Cull front    // ADDED BY BERNIE, TO FLIP THE SURFACES  
    LOD 100  
      
    Pass {    
        CGPROGRAM  
            #pragma vertex vert  
            #pragma fragment frag  
             
            #include "UnityCG.cginc"  
  
            struct appdata_t {  
                float4 vertex : POSITION;  
                float2 texcoord : TEXCOORD0;  
            };  
  
            struct v2f {  
                float4 vertex : SV_POSITION;  
                half2 texcoord : TEXCOORD0;  
            };  
  
            sampler2D _MainTex;  
            float4 _MainTex_ST;  
              
            v2f vert (appdata_t v)  
            {  
                v2f o;  
                o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);  
                // ADDED BY BERNIE:  
                v.texcoord.x = 1 - v.texcoord.x;                  
                o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);  
                return o;  
            }  
              
            fixed4 frag (v2f i) : SV_Target  
            {  
                fixed4 col = tex2D(_MainTex, i.texcoord);  
                return col;  
            }  
        ENDCG  
    }  
} 
}

该脚本的作用是让在球体外部的贴图在球体内部可以查看,并且是正向查看。

  1. 然后挂载脚本,在球体的shader上选择你自己的写的shader脚本。


    image.png
  2. 最后,完活,观察成果。
上一篇 下一篇

猜你喜欢

热点阅读