查看: 2085|回复: 1

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

[复制链接]

1

主题

20

听众

30

积分

Rank: 1

升级   15%

发表于 2014-9-1 15:59 |显示全部楼层
共享资源获取更多积分!share your resources get more credits!
资源信息 Tutorial Information
教程名称: Unity3d 车身、玻璃材质(发布原创教程可获得更多积分哦!)
适用引擎: (资源适用引擎)
教程语种: 中文
教程等级: 小白(等级越高教程越难,但能学到的东西越多)
教程格式: 文档(请用IE9以上浏览器访问本版块)
教程作者: 转载自互联网 (如有问题请短消息联系作者或发表回复)
点击查看原图 --> 美丽分割线
请先回复
哇伊~ (((‵□′))回复太烦了,怒买VIP(充值金额将用于论坛采购更多资源)

--> 请先登录 --> 请先登录 --> 请先登录 --> 请先登录 --> 请先登录 --> 请先登录 -->
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>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

楼主热帖

1

主题

20

听众

30

积分

Rank: 1

升级   15%

发表于 2014-9-1 15:59 |显示全部楼层

感谢楼主的无私分享!
回复

使用道具 举报

0

主题

20

听众

203

积分

Rank: 2

升级   1%

发表于 2017-3-18 21:28 |显示全部楼层
很不错
回复

使用道具 举报

0

主题

20

听众

201

积分

Rank: 2

升级   0.33%

发表于 2017-3-18 21:07 |显示全部楼层
楼主是超人
回复

使用道具 举报

0

主题

20

听众

204

积分

Rank: 2

升级   1.33%

发表于 2017-3-18 21:15 |显示全部楼层
顶顶多好
回复

使用道具 举报

0

主题

20

听众

205

积分

Rank: 2

升级   1.67%

发表于 2017-3-18 21:27 |显示全部楼层
难得一见的好帖
回复

使用道具 举报

0

主题

20

听众

204

积分

Rank: 2

升级   1.33%

发表于 2017-3-18 21:29 |显示全部楼层
不错不错
回复

使用道具 举报

0

主题

20

听众

201

积分

Rank: 2

升级   0.33%

发表于 2017-4-24 08:43 |显示全部楼层
很不错
回复

使用道具 举报

0

主题

20

听众

201

积分

Rank: 2

升级   0.33%

发表于 2017-4-24 08:48 |显示全部楼层
顶顶多好
回复

使用道具 举报

0

主题

20

听众

204

积分

Rank: 2

升级   1.33%

发表于 2017-4-24 08:16 |显示全部楼层
真心顶
回复

使用道具 举报

温馨提示:求助请到“Unity技术讨论”版块中发帖,便于集中解决!
您需要登录后才可以回帖 登录 | 立即注册

懒人模式:

关闭

站长推荐 上一条 /1 下一条

Unity3D游戏开发联盟(资源共享平台) -Unity3D,Unreal ( 苏ICP备12051100号 )   

GMT+8, 2019-11-22 16:55 , Processed in 0.120634 second(s), 81 queries .