創作內容

0 GP

Unity 5 可客製化的 Standard Shader

作者:Funcy│2018-03-24 22:48:48│巴幣:0│人氣:179
由於最近有遇到大量的需求 是要可以在Standard Shader 附加功能

因此我把官方的Standard Shader整理成了可以利用
vertexShader 、 fragmentShader的常規開發版本

一樣有放上GitHub 懶得整理大量的cginc可以從這份開始改


正文:

這是官方的StandardShader

可以觀察到 它有2個子著色器SubShader與9個Pass
但大部分的情況下,我們只會用到第一個Pass

Pass
{
Name "FORWARD"
Tags { "LightMode" = "ForwardBase" }
Blend [_SrcBlend] [_DstBlend]
ZWrite [_ZWrite]
CGPROGRAM
#pragma target 3.0
// TEMPORARY: GLES2.0 temporarily disabled to prevent errors spam on devices without textureCubeLodEXT
#pragma exclude_renderers gles
// -------------------------------------
#pragma shader_feature _NORMALMAP
#pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
#pragma shader_feature _EMISSION
#pragma shader_feature _METALLICGLOSSMAP
#pragma shader_feature ___ _DETAIL_MULX2
#pragma shader_feature _PARALLAXMAP
#pragma multi_compile_fwdbase
//#pragma multi_compile_fog
#pragma vertex vertForwardBase
#pragma fragment fragForwardBase
#include "UnityStandardCore.cginc"
ENDCG
}

只需要把 UnityStandardCore.cginc vertex、 fragment 整理出來就好了

我整理出來後的Standard在這頁

fragment 的輸入端可以在UnityStandardCore(Funcy).cginc看到
vertex的輸入端是依賴Unity內的官方文件,所需要的基本上都已經包含了,所以沒什麼差


如果研究過官方的Shader 應該會發現我這邊多加了normalWorld與projPos
原因是有了這兩個東西,可以實現的效果會多很多
我在 VertexOutputForwardBase 這個頂點著色器給定了projPos與normalWorld的值



我添加了簡易的fresnel功能的註解


原本長這樣


把註解砍掉後會變這樣


這樣就實現了 可客製化的 Standard Shader 功能
有興趣可以一起留言討論喔!
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3931660
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★w96396355557 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:InputManager... 後一篇:Unity Shader...

追蹤私訊切換新版閱覽

作品資料夾

aaa1357932大家
各位有空可以來我家看看畫作或聽聽我的全創作專輯!看更多我要大聲說1小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】