Unity3D Shader實現(xiàn)鏡子效果
更新時間:2020年05月04日 11:54:25 作者:忘夕
這篇文章主要為大家詳細介紹了Unity3D Shader實現(xiàn)鏡子效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Unity3D Shader實現(xiàn)鏡子效果的具體代碼,供大家參考,具體內(nèi)容如下/p>
Shader部分代碼:
Shader "Custom/FanShe" { Properties{ _MainTex("Albedo",2D) = "white"{} _MainTint("Diffuse Color",Color)=(1,1,1,1) _Cubemap("Cubemap",CUBE) = ""{} _ReflAmount("Reflection Amount",Range(0.1,1.0))=0.5 } SubShader{ Tags{"RenderType"="Opaque"} LOD 200 CGPROGRAM #pragma surface surf Lambert #pragma target 3.0 struct Input { float2 uv_MainTex; float3 worldRefl; }; sampler2D _MainTex; samplerCUBE _Cubemap; fixed4 _MainTint; half _ReflAmount; void surf(Input IN, inout SurfaceOutput o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex)*_MainTint; o.Albedo = c.rgb; o.Emission = texCUBE(_Cubemap, IN.worldRefl)*_ReflAmount; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
C#部分代碼:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Shader_FanShe : MonoBehaviour { public Cubemap cubeMap; public Camera cam; Material curmat; // Use this for initialization void Start () { InvokeRepeating("change", 1, 0.1f); curmat = gameObject.GetComponent<Renderer>().material; if (curmat == null) { Debug.Log("cw"); } } // Update is called once per frame void Update () { } void change() { cam.transform.rotation = Quaternion.identity; cam.RenderToCubemap(cubeMap); curmat.SetTexture("_Cubemap",cubeMap); } }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#判斷指定驅(qū)動器是否已經(jīng)準備就緒的方法
這篇文章主要介紹了C#判斷指定驅(qū)動器是否已經(jīng)準備就緒的方法,涉及C#針對硬件IO操作的技巧,需要的朋友可以參考下2015-04-04C#實現(xiàn)自由組合本地緩存、分布式緩存和數(shù)據(jù)查詢
這篇文章介紹了C#實現(xiàn)本地緩存、分布式緩存和數(shù)據(jù)查詢的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07深入淺出掌握Unity ShaderLab語法基礎(chǔ)
Unity中所有Shader文件都通過一種陳述性語言進行描述,稱為“ShaderLab”, 這篇文章主要介紹了Unity圖形學之ShaderLab入門基礎(chǔ),需要的朋友可以參考下2023-05-05