unity3d 玻璃材质 - CSDN
  • 有了前面的基础,就可以随意用Unity Fragement Shader来实现自己想要的效果。 这里就主要以玻璃为例。 首先实现玻璃的透明的特性; 里面的Tags { "Queue" = "Transparent" }是为了实现透明的效果。Blend SrcAlpha...

    如有更多问题,请qq254033230咨询。

    有了前面的基础,就可以随意用Unity Fragement Shader来实现自己想要的效果。

    这里就主要以玻璃为例。

    首先实现玻璃的透明的特性;

    里面的Tags { "Queue" = "Transparent" }是为了实现透明的效果。Blend SrcAlpha OneMinusSrcAlpha为了显示透明的物体不改变后面的物体的显示效果。最后,颜色是一个思维数组,透明度是颜色的最后一个元素,所以用col[3]来表示透明度。_AlphaVal控制透明度。如果想实现彩色玻璃的效果,只需要改变_MainTint和_AlphaVal的值。

    Shader "Custom/FragmentShader" {
    properties{
            _MainTint("Main Color", Color) = (1, 1, 1, 1)
            _AlphaVal("Alpha", Range(0, 1)) = 0.1
    }
    	SubShader {
    	    Tags { "Queue" = "Transparent" }
    
    		PASS{
    
    		Blend SrcAlpha OneMinusSrcAlpha
    				
    		CGPROGRAM
    		#pragma vertex vert  
            #pragma fragment frag
    
            #include "UnityCG.cginc"
            #include "Lighting.cginc"
    
    
            float4 _MainTint;
            float _AlphaVal;
    
    
            struct v2f{
            float4 pos:POSITION;
            float4 col:texcoord0;
            };  
    
            v2f vert(appdata_base v){
            v2f o;
            o.pos=UnityObjectToClipPos(v.vertex);
            return o;
            }
    
            float4 frag(v2f IN):COLOR{
            float4 col;
            col=_LightColor0*_MainTint;
            col[3]*=_AlphaVal;
            return col;
            }
    		ENDCG
    		}
    	}
    	FallBack "Diffuse"
    
    }


    如果想玻璃效果更逼真,带上漫反射的光,加上环境光,以及自身的颜色的组合。

    Shader "Custom/FragmentShader" {
    properties{
            _MainTint("Main Color", Color) = (1, 1, 1, 1)
            _AlphaVal("Alpha", Range(0, 1)) = 0.1
    }
    	SubShader {
    	    Tags { "Queue" = "Transparent" }
    
    		PASS{
    
    		Blend SrcAlpha OneMinusSrcAlpha
    				
    		CGPROGRAM
    		#pragma vertex vert  
            #pragma fragment frag
    
            #include "UnityCG.cginc"
            #include "Lighting.cginc"
    
    
            float4 _MainTint;
            float _AlphaVal;
    
    
            struct v2f{
            float4 pos:POSITION;
            float3 normal1:texcoord1;
            float4 vertex1:texcoord2;
            float4 col:texcoord0;
            };  
    
            v2f vert(appdata_base v){
            v2f o;
            o.pos=UnityObjectToClipPos(v.vertex);
            o.normal1=v.normal;
            o.vertex1=v.vertex;
            return o;
            }
    
            float4 frag(v2f IN):COLOR{
            float4 col= UNITY_LIGHTMODEL_AMBIENT;  
            float3 N=UnityObjectToWorldNormal(IN.normal1);  
            float3 L=normalize(WorldSpaceLightDir(IN.vertex1));  
            float diffuseScale=saturate(dot(N,L));
            col+=_LightColor0*diffuseScale+_MainTint; 
            col[3]*=_AlphaVal;
            return col;
            }
    		ENDCG
    		}
    	}
    	FallBack "Diffuse"
    
    }

    如果想呈现周围景色,那么需要加上立方体贴图。用上立方体贴图,造成反射的假象。

    Shader "Custom/FragmentShader" {
    properties{
            _MainTint("Main Color", Color) = (1, 1, 1, 1)
            _AlphaVal("Alpha", Range(0, 1)) = 0.1
            _CubeMap("CubeMap",CUBE)=""{}
    }
    	SubShader {
    	    Tags { "Queue" = "Transparent" }
    
    		PASS{
    
    		Blend SrcAlpha OneMinusSrcAlpha
    				
    		CGPROGRAM
    		#pragma vertex vert  
            #pragma fragment frag
    
            #include "UnityCG.cginc"
            #include "Lighting.cginc"
    
            samplerCUBE _CubeMap;
            float4 _MainTint;
            float _AlphaVal;
    
    
            struct v2f{
            float4 pos:POSITION;
            float3 normal1:texcoord1;
            float4 vertex1:texcoord2;
            float3 R:texcoord3;
            float4 col:texcoord0;
    
            };  
    
            v2f vert(appdata_base v){
            v2f o;
            o.pos=UnityObjectToClipPos(v.vertex);
            o.normal1=v.normal;
            o.vertex1=v.vertex;
            return o;
            }
    
            float4 frag(v2f IN):COLOR{
            float4 col= UNITY_LIGHTMODEL_AMBIENT;  
            float3 N=UnityObjectToWorldNormal(IN.normal1);  
            float3 L=normalize(WorldSpaceLightDir(IN.vertex1));  
            float diffuseScale=saturate(dot(N,L));
            col+=_LightColor0*diffuseScale+_MainTint;
    
            float3 N2=normalize(mul(IN.normal1,(float3x3)_World2Object));
            float3 V= -WorldSpaceViewDir(IN.vertex1);
            col+=texCUBE(_CubeMap,reflect(V,N2));
    
            col[3]*=_AlphaVal;
            return col;
            }
    		ENDCG
    		}
    	}
    	FallBack "Diffuse"
    
    }








    展开全文
  • 今天我们用学过的Shader知识实现一个简单的玻璃材质。首先,玻璃是半透明的 玻璃最主要的特点就是它是透明的,不同的玻璃有不同的不透明度,水杯的透明度比较低,而装药品的棕色玻璃瓶不透明度就比较高。当然,玻璃...

      今天我们用学过的Shader知识实现一个简单的玻璃材质。

    首先,玻璃是半透明的

      玻璃最主要的特点就是它是透明的,不同的玻璃有不同的不透明度,水杯的透明度比较低,而装药品的棕色玻璃瓶不透明度就比较高。当然,玻璃也有一定的颜色。利用透明,我们可以这样实现玻璃材质:

    Shader "Custom/GlassShader" {
        Properties {
            _MainTint("Main Color", Color) = (1, 1, 1, 1)
            _AlphaVal("Alpha", Range(0, 1)) = 0.1
        }
        SubShader {
            Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType"="Transparent" }
            LOD 200
    
            CGPROGRAM
            #pragma surface surf BlinnPhong alpha
    
            fixed4 _MainTint;
            float _AlphaVal;
    
            struct Input {
                float3 viewDir;
            };
    
            void surf (Input IN, inout SurfaceOutput o) {
                o.Albedo = _MainTint.rgb;
                o.Alpha = _AlphaVal;
            }
            ENDCG
        } 
        FallBack "Diffuse"
    }
    

      此时的效果是这样的,可以看到透明效果,但是它看上去更像两块粗糙的透明的塑料片。

      这里写图片描述

    给玻璃增加反射效果

      为了表现这是光滑的玻璃而非塑料,我们增加反射属性,利用天空盒实现简单的反射效果,此时的代码是这样的:

    Shader "Custom/GlassShader" {
        Properties {
            _MainTint("Main Color", Color) = (1, 1, 1, 1)
            _AlphaVal("Alpha", Range(0, 1)) = 0.1
            _CubeMap("Sky Box", CUBE) = ""{}
            _ReflPower("Reflect Power", Range(0, 1)) = 1
        }
        SubShader {
            Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType"="Transparent" }
            LOD 200
    
            CGPROGRAM
            #pragma surface surf BlinnPhong alpha
    
            fixed4 _MainTint;
            float _AlphaVal;
            samplerCUBE _CubeMap;
            float _ReflPower;
    
            struct Input {
                float3 worldRefl;
                float3 viewDir;
            };
    
            void surf (Input IN, inout SurfaceOutput o) {
                half4 s = texCUBE(_CubeMap, IN.worldRefl);
                o.Albedo = _MainTint.rgb;
                o.Emission = s.rgb * _ReflPower;
                o.Alpha = _AlphaVal;
            }
            ENDCG
        } 
        FallBack "Diffuse"
    }

      这时候玻璃就有了反射效果,尤其是当我们从不同角度看的时候,会看到玻璃反射了场景中的景象,当然这其实是假的,那来自我们指定的天空盒。

      这里写图片描述

    给玻璃增加菲涅尔效果

      曾经说到过菲涅尔菲先生的效果非常不错,可以根据视角控制反射的强弱。我们的玻璃当然也可以应用这种效果:

    Shader "Custom/GlassShader" {
        Properties {
            _MainTint("Main Color", Color) = (1, 1, 1, 1)
            _AlphaVal("Alpha", Range(0, 1)) = 0.1
            _CubeMap("Sky Box", CUBE) = ""{}
            _ReflPower("Reflect Power", Range(0, 1)) = 1
            _FresnelPower("Fresnel Power", Range(0.1, 5)) = 2
        }
        SubShader {
            Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType"="Transparent" }
            LOD 200
    
            CGPROGRAM
            #pragma surface surf BlinnPhong alpha
    
            fixed4 _MainTint;
            float _AlphaVal;
            samplerCUBE _CubeMap;
            float _ReflPower;
            float _FresnelPower;
    
            struct Input {
                float3 worldRefl;
                float3 viewDir;
            };
    
            void surf (Input IN, inout SurfaceOutput o) {
                float rim = 1.0 - max(0, dot(o.Normal, normalize(IN.viewDir)));
                rim = pow(rim, _FresnelPower);
                half4 s = texCUBE(_CubeMap, IN.worldRefl);
                o.Albedo = _MainTint.rgb;
                o.Emission = s.rgb * _ReflPower * rim;
                o.Alpha = _AlphaVal;
            }
            ENDCG
        } 
        FallBack "Diffuse"
    }

      下面上本次的最终效果图:

      这里写图片描述

    结束语

      掌握了一些基本的Shader知识以后,剩下的就是继续深入研究和利用已有的知识实现想要的效果,Shader是灵活的,我们完全可以根据自己的想法去实现想要材质。就算有人觉得效果不好,也可以悄悄告诉他:“这是艺术…”。

    展开全文
  • Shader "Reflective/Glass" {   Properties {   _Color ("Main Color", Color) = (1,1,1,1)   _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)  ...

    Shader "Reflective/Glass" {  
        Properties {  
            _Color ("Main Color", Color) = (1,1,1,1)  
            _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)  
            _Shininess ("Shininess", Range (0.01, 1)) = 0.078125  
            _ReflectColor ("Reflect Strength", Color) = (1,1,1,0.5)  
            _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}  
            _Parallax ("Height", Range (0.005, 0.08)) = 0.02  
            _Cube ("Reflection Cubemap", Cube) = "_Skybox" { TexGen CubeReflect }  
        }  
        SubShader   
        {  
            LOD 300  
            Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}  
            Blend one OneMinusDstColor  
            ZWrite Off  
              
            // First pass does reflection cubemap  
            Pass   
            {   
                Name "BASE" 
                Tags {"LightMode" = "Always"}  
    CGPROGRAM 
    #pragma vertex vert 
    #pragma fragment frag 
    #pragma fragmentoption ARB_fog_exp2 
    #pragma fragmentoption ARB_precision_hint_fastest 
    #include "UnityCG.cginc"  
     
    struct v2f {  
        V2F_POS_FOG;  
        float2 uv : TEXCOORD0;  
        float3 I : TEXCOORD1;  
    };  
     
    uniform float4 _MainTex_ST;  
     
    v2f vert(appdata_tan v)  
    {  
        v2f o;  
        PositionFog( v.vertex, o.pos, o.fog );  
        o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);  
     
        // calculate object space reflection vector   
        float3 viewDir = ObjSpaceViewDir( v.vertex );  
        float3 I = reflect( -viewDir, v.normal );  
          
        // transform to world space reflection vector  
        o.I = mul( (float3x3)_Object2World, I );  
          
        return o;   
    }  
     
    uniform sampler2D _MainTex;  
    uniform samplerCUBE _Cube;  
    uniform float4 _ReflectColor;  
     
    half4 frag (v2f i) : COLOR  
    {  
        half4 texcol = tex2D (_MainTex, i.uv);  
        half4 reflcol = texCUBE( _Cube, i.I );  
        reflcol *= texcol.a;  
        return reflcol * _ReflectColor;  
    }   
    ENDCG  
            }  
     
            UsePass "Parallax Specular/PPL" 
     
        }  
        FallBack "Reflective/VertexLit", 1  

    Shader "Reflective/Glass" {
        Properties {
            _Color ("Main Color", Color) = (1,1,1,1)
            _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
            _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
            _ReflectColor ("Reflect Strength", Color) = (1,1,1,0.5)
            _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
            _Parallax ("Height", Range (0.005, 0.08)) = 0.02
            _Cube ("Reflection Cubemap", Cube) = "_Skybox" { TexGen CubeReflect }
        }
        SubShader
        {
            LOD 300
            Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
            Blend one OneMinusDstColor
            ZWrite Off
           
            // First pass does reflection cubemap
            Pass
            {
                Name "BASE"
                Tags {"LightMode" = "Always"}
    CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag
    #pragma fragmentoption ARB_fog_exp2
    #pragma fragmentoption ARB_precision_hint_fastest
    #include "UnityCG.cginc"

    struct v2f {
        V2F_POS_FOG;
        float2 uv : TEXCOORD0;
        float3 I : TEXCOORD1;
    };

    uniform float4 _MainTex_ST;

    v2f vert(appdata_tan v)
    {
        v2f o;
        PositionFog( v.vertex, o.pos, o.fog );
        o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);

        // calculate object space reflection vector   
        float3 viewDir = ObjSpaceViewDir( v.vertex );
        float3 I = reflect( -viewDir, v.normal );
       
        // transform to world space reflection vector
        o.I = mul( (float3x3)_Object2World, I );
       
        return o;
    }

    uniform sampler2D _MainTex;
    uniform samplerCUBE _Cube;
    uniform float4 _ReflectColor;

    half4 frag (v2f i) : COLOR
    {
        half4 texcol = tex2D (_MainTex, i.uv);
        half4 reflcol = texCUBE( _Cube, i.I );
        reflcol *= texcol.a;
        return reflcol * _ReflectColor;
    }
    ENDCG
            }

            UsePass "Parallax Specular/PPL"

        }
        FallBack "Reflective/VertexLit", 1
    }

    车身shader用Reflective/Specular中的一种

    然后加入以下脚本:

    RenderToCubemap.js:

    // Attach this script to an object that uses a Reflective shader.  
    // Realtime reflective cubemaps!  
    @script ExecuteInEditMode  
     
    var cubemapSize = 128;  
    var oneFacePerFrame = false;  
    private var cam : Camera;  
    private var rtex : RenderTexture;  
     
    function Start ()   
    {  
        // render all six faces at startup  
        UpdateCubemap( 63 );  
    }  
     
    function LateUpdate ()   
    {  
        if (oneFacePerFrame)   
        {  
            var faceToRender = Time.frameCount % 6;  
            var faceMask = 1 << faceToRender;  
            UpdateCubemap (faceMask);  
        }   
        else   
        {  
            UpdateCubemap (63); // all six faces  
        }  
    }  
     
    function UpdateCubemap (faceMask : int)   
    {  
        if (!cam)   
        {  
            var go = new GameObject ("CubemapCamera", Camera);  
            go.hideFlags = HideFlags.HideAndDontSave;  
            go.transform.position = transform.position;  
            go.transform.rotation = Quaternion.identity;  
            cam = go.camera;  
            cam.farClipPlane = 100; // don't render very far into cubemap  
            cam.enabled = false;  
        }  
     
        if (!rtex)   
        {   
            rtex = new RenderTexture (cubemapSize, cubemapSize, 16);  
            rtex.isPowerOfTwo = true;  
            rtex.isCubemap = true;  
            rtex.hideFlags = HideFlags.HideAndDontSave;  
            renderer.sharedMaterial.SetTexture ("_Cube", rtex);  
        }  
     
        cam.transform.position = transform.position;  
        cam.RenderToCubemap (rtex, faceMask);  
    }  
     
    function OnDisable ()   
    {  
        DestroyImmediate (cam);  
        DestroyImmediate (rtex);  

    展开全文
  • unity实现玻璃效果

    2017-02-22 15:43:47
    一、使用Cubemap,做一个假反射 shader代码如下: Shader "Custom/glassShader" { Properties { _MainColor("Main Color",Color)=(1,1,1,1) _MainTex ("Base (R

    一、使用Cubemap,做一个假反射


    shader代码如下:

    Shader "Custom/glassShader" {
    	Properties {
    		_MainColor("Main Color",Color)=(1,1,1,1)
    		_MainTex ("Base (RGB)", 2D) = "white" {}
    		_Cube("Cube",CUBE)=""{}
    	}
    	SubShader {
    		Tags {"RenderType"="Opaque"}
    		LOD 200
    		
    		//cull off
    
    		CGPROGRAM
    		#pragma surface surf Lambert alpha
    
    		fixed4 _MainColor;
    		sampler2D _MainTex;
    		samplerCUBE _Cube;
    
    		struct Input {
    			float2 uv_MainTex;
    			float3 worldRefl;
    		};
    
    		void surf (Input IN, inout SurfaceOutput o) {
    			half4 c = tex2D (_MainTex, IN.uv_MainTex);
    			o.Albedo = c.rgb*_MainColor.rgb;
    			o.Emission=texCUBE(_Cube,IN.worldRefl).rgb;
    			o.Alpha = c.a*_MainColor.a;
    		}
    		ENDCG
    	} 
    
    	FallBack "Diffuse"
    }
    


    二、使用GrabPass,抓取屏幕纹理,实现实时反射

    shader代码如下:

    Shader "Unlit/GrabGlass"
    {
    	Properties
    	{
    		_Color("Main Color",Color)=(1,1,1,1)
    		_MainTex ("Texture", 2D) = "white" {}
    	}
    	SubShader
    	{
    		
    	
    		Tags {"Queue"="Transparent" "RenderType"="Opaque" }//Opaque
    		LOD 100
    
    		//绘制半透明物体 关闭深度缓存
    		ZWrite Off
    		//透明混合
    		Blend SrcAlpha OneMinusSrcAlpha
    
    		//如果没有命名,则可以用_GrabTexture来读取,不过开销很大,应用到特殊效果时才去应用
    		GrabPass
    		{
    				"_GrabTex"
    		}
    
    		Pass
    		{
    			CGPROGRAM
    			#pragma vertex vert
    			#pragma fragment frag
    			// make fog work
    			#pragma multi_compile_fog
    			
    			#include "UnityCG.cginc"
    
    			struct appdata
    			{
    				float4 vertex : POSITION;
    				float2 uv : TEXCOORD0;
    			};
    
    			struct v2f
    			{
    				float2 uv : TEXCOORD0;
    				UNITY_FOG_COORDS(1)
    				float4 vertex : SV_POSITION;
    			};
    
    			sampler2D _MainTex;
    			float4 _MainTex_ST;
    			fixed4 _Color;
    			sampler2D _GrabTex;
    
    			v2f vert (appdata v)
    			{
    				v2f o;
    				o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
    				o.uv = TRANSFORM_TEX(v.uv, _MainTex);
    				UNITY_TRANSFER_FOG(o,o.vertex);
    				return o;
    			}
    			
    			fixed4 frag (v2f i) : SV_Target
    			{
    				// sample the texture
    				fixed4 col = tex2D(_MainTex, i.uv)*_Color;
    				
    				// apply fog
    				UNITY_APPLY_FOG(i.fogCoord, col);	
    				//调整一下uv
    				float2 uv=i.uv;	
    				uv.x=1-uv.x;
    				return col*tex2D(_GrabTex,uv);
    			}
    			ENDCG
    		}
    	}
    }
    

    效果如下:


    三、使用摄像机实现实时反射

    因为GrabPass,相对来说消耗较大,只建议用于一些特殊效果,于是这里就借助辅助摄像机,来实现实时反射效果,当然这需要多写一个脚本,同时需要在辅助摄像机中屏蔽玻璃本身

    shader代码如下:

    Shader "Unlit/CameraGlass"
    {
    	Properties
    	{
    		_MainTex ("Texture", 2D) = "white" {}
    	}
    	SubShader
    	{
    		Tags { "RenderType"="Opaque" }
    		LOD 100
    
    		Pass
    		{
    			CGPROGRAM
    			#pragma vertex vert
    			#pragma fragment frag
    			// make fog work
    			#pragma multi_compile_fog
    			
    			#include "UnityCG.cginc"
    
    			struct appdata
    			{
    				float4 vertex : POSITION;
    				float2 uv : TEXCOORD0;
    			};
    
    			struct v2f
    			{
    				float2 uv : TEXCOORD0;
    				UNITY_FOG_COORDS(1)
    				float4 vertex : SV_POSITION;
    			};
    
    			sampler2D _MainTex;
    			float4 _MainTex_ST;
    
    			v2f vert (appdata v)
    			{
    				v2f o;
    				o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
    				o.uv = TRANSFORM_TEX(v.uv, _MainTex);
    				UNITY_TRANSFER_FOG(o,o.vertex);
    				return o;
    			}
    			
    			fixed4 frag (v2f i) : SV_Target
    			{
    				// sample the texture  需要调整一下uv
    				fixed4 col = tex2D(_MainTex, 1-i.uv);
    				// apply fog
    				UNITY_APPLY_FOG(i.fogCoord, col);				
    				return col;
    			}
    			ENDCG
    		}
    	}
    }
    

    脚本代码如下:

    using UnityEngine;
    using System.Collections;
    
    public class RenderGlassTexture : MonoBehaviour {
        
        /// <summary>
        /// 辅助摄像机 
        /// 原理:就是将辅助摄像机所看到的内容渲染到玻璃物体上,所以就实现了实时反射的镜面效果
        /// 因为玻璃也是场景中的物体,所以辅助摄像机也会看见他
        /// 所以最好能将玻璃物体单独放在一个层级中,让辅助摄像机不去渲染他
        /// </summary>
        public Camera cam;
        private RenderTexture renderTex;
        /// <summary>
        /// 玻璃shader
        /// </summary>
        public Shader glassShader;
        /// <summary>
        /// 玻璃材质
        /// </summary>
        private Material m_GlassMaterial;
        protected Material GlassMaterial
        {
            get
            {
                if (m_GlassMaterial == null)
                {
                    m_GlassMaterial = new Material(glassShader);
                }
                return m_GlassMaterial;
            }
        }
    
        // Use this for initialization
    	void Start () {
            renderTex = new RenderTexture(Screen.width, Screen.height, 16);
            cam.targetTexture = renderTex;
    	}
    
        //在摄像机开始裁剪场景之前调用
        void OnPreCull()
        {
            GlassMaterial.SetTexture("_MainTex", renderTex);
        }
    
        //在相机完成场景渲染后调用
        void OnPostRender()
        {
            GlassMaterial.SetTexture("_MainTex", null);
        }
    }
    

    效果如下:


    展开全文
  • Unity 玻璃材质 各种玻璃材质,操作很简单,导入场景以后直接把材质球附到物体上即可,非常好用,童叟无欺.
  • unity3d 玻璃材质

    2020-07-29 14:20:34
    玻璃材质shader代码,word文档格式
  • 标准着色器的材质参数(一):渲染模式,反射率和透明度,镜面模式的镜面参数
  • 最近在学习用Unity3D
  • 1.首先创建一个材质球Glass 2.将材质球Inspector窗口中的Rendering Mode选为Transprent,这个选项可以使物体改变透明...所以如果需要玻璃材质则如下图设置: 但是这时候发现,玻璃球反射的光并不是周围的物体...
  • Unity3D给力材质

    2020-07-30 23:32:36
    Unity3D材质包,内含例子,主要有玻璃,金属,陶瓷,塑料等一些材质,找不到相关材质的兄弟可以下个哈:)
  • 玻璃shader: Shader "Reflective/Glass" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1) _Shininess ("Shininess", Range (0.0
  • Unity3D材质包,内含例子,主要有玻璃,金属,陶瓷,塑料等一些材质,还有大量Shader 需要的自行下载哦.
  • 直接导入unity3d中,有工程例子 场景例子在assets文件夹下的OTVglass.unity
  • 解决三维模型导入unity中,玻璃双面透明显示的材质问题。
  • unity3d材质球大全合集

    2020-07-30 23:32:03
    数百种u3d材质球,包括金属,玻璃,陶瓷,塑料等,内含实例
  • 制作方法如下: ...3.利用Photoshop自动的滤镜功能,依次使用像素化下的晶格化滤镜,扭曲下的玻璃滤镜,模糊镜,可根据自己的要求反复设置参数。 4.调整图层的不透明度、填充值。保存PSD文件。 5.在
  • unity3d玻璃材质Shader,各种玻璃材质的shader,门窗彩色贴花。【unity3d玻璃材质Shader,各种玻璃材质的shader,门窗彩色贴花。
  • unity3d 玻璃shader

    2013-02-25 10:55:01
    Shader "EnvMapGlass" {  Properties {  _EnvMap ("EnvMap", 2D) = "black" { TexGen SphereMap }  }  SubShader {  SeperateSpecular On Pass {  ...Cull Front
  • Unity3D 材质球学习

    2018-06-01 11:52:39
    类型: FX: Lighting and glass effects.( 灯光、玻璃) GUI and UI: For user interface graphics.(用于用户界面图形) Mobile: Simplified high-performance shader for mobile devices.(针对移动设备的简化的高...
  • 一、Material(材质): 材质:物体的质地,指的是色彩、纹理、光滑度、透明度、反射率、折射率、发光度等等。 实际就是Shader 的实例。 Shader 着色器:专门用来渲染3D图形技术的技术,可以使纹理以某种方式...
1 2 3 4 5 ... 20
收藏数 549
精华内容 219
热门标签
关键字:

unity3d 玻璃材质