筆者介紹:姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍:《手把手教你架構3d遊戲引擎》電子工業出版社和《unity3d實戰核心技術詳解》電子工業出版社等。
最近在利用shader實現眼鏡的反射,透明以及高光,法線等效果,unity雖然為我們提供了很多的shader,但是在實際專案開發中,大部分不能直接使用,因為專案的需求要求實現的渲染效果時比較細緻的,我們專案目前實現的眼鏡渲染比較貼近於真實的眼鏡,這就要求我們要明白其實現原理,然後將其除錯出來,我們的眼鏡分為三部分:鏡框,鏡面,眼鼻三部分。
每一部分都單獨對其進行渲染處理,當然如果你講它們合併在一起也是可以的,鏡框的實現需要我們使用法線和原圖兩張材質就實現了高光,法線效果,非常炫,實現效果如下所示:
接下來實現鏡面效果,在這裡使用了cubemap和diffuse模擬真實環境中的鏡面反射效果,實現如下所示:
最後乙個是鏡鼻的實現,它的實現比較簡單只是用了透明處理,實現的效果如下所示:
而且實現了透明遮擋處理,以上就是關於眼鏡的實現效果,下面把眼鏡鏡面的渲染**給讀者展示如下:
shader "custom/glass_mirror"
_cubemap_slider ("cubemap_slider", range(0, 1)) = 1
_color ("color", color) = (0.5,0.5,0.5,1)
_texture_diffuse ("texture_diffuse", 2d) = "white" {}
_alpha_slider ("_alpha_slider", range(0, 1)) = 1
}subshader
blend srcalpha oneminussrcalpha
pass
cgprogram
#pragma vertex vert
#pragma fragment frag
#define unity_pass_forwardbase
#include "unitycg.cginc"
#include "autolight.cginc"
#include "unitypbslighting.cginc"
#include "unitystandardbrdf.cginc"
#pragma multi_compile_fwdbase_fullshadows
//#pragma multi_compile_fog
//#pragma exclude_renderers gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2
#pragma target 3.0
// uniform float4 _lightcolor0;
uniform samplercube _cubemap;
uniform float _cubemap_slider;
uniform float4 _color;
uniform sampler2d _texture_diffuse; uniform float4 _texture_diffuse_st;
uniform float _alpha_slider;
struct vertexinput ;
struct vertexoutput ;
vertexoutput vert (vertexinput v)
float4 frag(vertexoutput i) : color
endcg}}
fallback "diffuse"
}
其實就是利用了反射,法線,透明這些基本的技術綜合在一起實現了鏡面的shader處理。。。。 unity 3D模型流光Shader
今天分享下unity中3d模型的一些shader。先來個最簡單的,就是上下滾動的純色流光。通過調整 centerrange來實現上下滾動。o.objz v.vertex.x 這裡使用模型的模型座標系模型被旋轉過所以這裡用的是x軸,同學如果想用得改下哈。flag saturate flag flag被...
Unity3D中的shader高階
unity3d shader 基礎知識 unity3d shader 官方教程翻譯 1.unity中配備了強大的陰影和材料的語言工具稱為shaderlab,以程式語言來看,它類似於cgfx和direct3d的效果框架語法,它描述了材質所必須要的一切諮詢,而不僅僅侷限於平面頂點 畫素著色。2.在uni...
Unity3D內建Shader翻譯一
unity3d內建了很多shader,文件很詳細,自己翻一下.便於加深印象.首先先解釋下unity3d的shader.unity裡面的shaders是使用一種叫shaderlab的語言編寫的,它同微軟 的.fx檔案或者nvidia的cgfx有些類似。傳統意義上的vertex shader和pixel...