涂社 发表于 2014-9-1 15:59

Unity3d 车身、玻璃材质

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.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:
纯文本查看 复制代码<font color="#333333"><font face="Arial">// 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);}</font></font>

涂社 发表于 2014-9-1 15:59


感谢楼主的无私分享!{:soso__11402694654016840197_7:}

gl0079 发表于 2017-3-18 21:28

很不错

jia1009 发表于 2017-3-18 21:07

楼主是超人

xtygah14three 发表于 2017-3-18 21:15

顶顶多好

KenChen 发表于 2017-3-18 21:27

难得一见的好帖

下载M~回家 发表于 2017-3-18 21:29

不错不错

3D之帝ぷ 发表于 2017-4-24 08:43

很不错

xvmingze616 发表于 2017-4-24 08:48

顶顶多好

bill800605 发表于 2017-4-24 08:16

真心顶
页: [1]
查看完整版本: Unity3d 车身、玻璃材质