找回密码
 立即注册
查看: 3662|回复: 91

[其他] Unity3d 车身、玻璃材质

[复制链接]
发表于 2014-9-1 15:59 | 显示全部楼层 |阅读模式
资源信息 Tutorial Information
教程名称: Unity3d 车身、玻璃材质(发帖教程)
适用引擎:   (适用引擎,为空默认为Unity)
教程语种: 中文
教程等级: 1
教程格式: 文档(请用IE9以上浏览器访问本版块)
教程作者: 转载自互联网 (如有问题请短消息联系作者或发表回复)
下载地址: (兑换积分)
点击查看原图
美丽分割线
Unity3d 车身、玻璃材质
玻璃shader
[C#] 纯文本查看 复制代码
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  
}
车身shaderReflective/Specular中的一种
然后加入以下脚本:
RenderToCubemap.js:

[JavaScript] 纯文本查看 复制代码
<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:}
发表于 2017-3-18 21:28 | 显示全部楼层
很不错
发表于 2017-3-18 21:07 | 显示全部楼层
楼主是超人
发表于 2017-3-18 21:15 | 显示全部楼层
顶顶多好
发表于 2017-3-18 21:27 | 显示全部楼层
难得一见的好帖
发表于 2017-3-18 21:29 | 显示全部楼层
不错不错
发表于 2017-4-24 08:43 | 显示全部楼层
很不错
发表于 2017-4-24 08:48 | 显示全部楼层
顶顶多好
发表于 2017-4-24 08:16 | 显示全部楼层
真心顶
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 01:29 , Processed in 0.113931 second(s), 32 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表