unity 太阳自发光_unity shader基础之——unity中实现环境光、自发光
上篇主要講的是unity中的光照模型及其原理,還有幾種光照類型(自發光、環境光、漫反射、高光反射),后面幾篇文章就開始在unity中實現這幾種光照類型,本篇在unity實現自發光、環境光。
一、unity中的環境光和自發光
在標準光照模型中,環境光和自發光的計算是最簡單的。
環境光可以在Window->Rendering->Lighting Settings->Ambient Source/Ambient Color/Ambient Intensity中控制。在shader中,我們只需要通過unity內置變量UNITY_LIGHTMODEL_AMBIENT就可以得到環境光的顏色和強度信息。
而大多物體是沒有自發光特性的,如果要計算自發光非常簡單,只需要在片元著色器輸出最后的顏色之前,把材質的自發光emission計算好添加到輸出顏色即可。
拓展:
這里如果要讓物體全部區域都自發光,直接添加自發光顏色即可。如果要在某些特定區域去自發光,比如一個玩家模型,頭上有一顆寶石,只讓寶石擁有自發光,下圖是沒有自發光效果的原圖:
1. 要添加自發光效果那么首先需要加上一張美術做好的黑白通道圖,白色區域是寶石的區域,其他地方全黑(原理是白色各向量分量顏色默認值是1,黑色是0,所以和其他參數進行相乘后,黑色區域最后結果始終是0,加到片元輸出顏色中沒有變化,白色是1,乘以定義的自發光顏色還是自發光的顏色值),如下圖:
2. 然后聲明屬性(包括通道圖、自發光顏色、強度)
_EmissionTex("Emission Texture",2D) = "black"{}
_EmissionColor("Emission Color", Color) = (0,0,0,0)
_EmissionPower("Emission Power",Range(0,2)) = 1
3. 然后定義相應變量:
sampler2D _EmissionTex;
fixed _EmissionPower;
fixed4 _EmissionColor;
4. 對通道圖進行采樣,并和顏色、強度相乘、算出自發光最終顏色值:
fixed4 em = tex2D(_EmissionTex, i.uv);
fixed3 Emission = _EmissionColor * em * _EmissionPower ;
5. 添加到最后的輸出顏色中:
c += Emission;
6. 我們可以自己通過材質面板控制自發光顏色、強度,來調整寶石的自發光,這里自發光如果想擴散出來一點光暈,可以結合全屏后處理的bloom效果,這里不再介紹,有興趣可以自行研究,最后效果圖如下:
版權聲明:本文為CSDN博主「小橙子0」的原創文章,
遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/cgy56191948/article/details/102486311
總結
以上是生活随笔為你收集整理的unity 太阳自发光_unity shader基础之——unity中实现环境光、自发光的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑群晖安装如此简单
- 下一篇: 为什么硬盘插在计算机上不显示,硬盘插在电