日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3d的ShadeSH9环境光的球谐函数的应用

發(fā)布時間:2023/12/31 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3d的ShadeSH9环境光的球谐函数的应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

時光倒流,直接說結(jié)論

看完下面所有資料后,得知:

?

ShadeSH9 Unity內(nèi)部應(yīng)用在什么地方呢??

。。。

//------------------------------------------------------------------------------------- half3 ShadeSHPerVertex (half3 normal, half3 ambient) {#if UNITY_SAMPLE_FULL_SH_PER_PIXEL// Completely per-pixel// nothing to do here#elif (SHADER_TARGET < 30) || UNITY_STANDARD_SIMPLE// Completely per-vertexambient += max(half3(0,0,0), ShadeSH9 (half4(normal, 1.0)));#else

而使用這個方法,又必須有一個前置條件

#elif UNITY_SHOULD_SAMPLE_SH#ifdef VERTEXLIGHT_ON// Approximated illumination from non-important point lightsambientOrLightmapUV.rgb = Shade4PointLights (unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0,unity_LightColor[0].rgb, unity_LightColor[1].rgb, unity_LightColor[2].rgb, unity_LightColor[3].rgb,unity_4LightAtten0, posWorld, normalWorld);#endifambientOrLightmapUV.rgb = ShadeSHPerVertex (normalWorld, ambientOrLightmapUV.rgb);#endif

參考一

Unity Standard Shader 技術(shù)分析 - 知乎 (zhihu.com)

Diffuse部分

三種環(huán)境光源都會進(jìn)行Diffuse部分的計算。當(dāng)物體接受LightMap的時候,環(huán)境光照會被合并到LightMap中去,而當(dāng)物體不接受LightMap的時候,會使用一種在RTR4中被稱為Sphere Harmonic Irradiance的技術(shù),也就是使用球諧函數(shù)來解析的表示Irradiance Environment Map,其技術(shù)來源于Ravi Ramamoorthi,等人的文章"An Efficient Representation for Irradiance Environment Maps"。

另外Unity在進(jìn)行Sphere Harmonic Irradiance的計算會根據(jù)是否使用了光照探針而有所不同。在沒有使用光照探針時,會在頂點著色階段進(jìn)行Sphere Harmonic Irradiance計算,而在使用光照探針時,環(huán)境光照的Irradiance Map會被合并進(jìn)光照探針中。

Specular部分

只有當(dāng)使用天空盒作為環(huán)境光照的時候,才會進(jìn)行Specular部分的光照計算。Unity使用的是基于經(jīng)驗的模糊算法。模糊的方法是通過Mipmap來進(jìn)行降采樣,而降采樣的層級則通過著色表面的粗糙程度來確定

參考二

UNITY3D ShadeSH9 屬于Irradiance environment maps 方法,可以參考DX SDK?PRTDemo,里面是幾乎相同的實現(xiàn),總之就是解光傳輸?shù)姆e分方程

目前主流輻射度計算的兩種主流方法

1.Irradiance environment maps 輻照環(huán)境貼圖方法,可用于生成柔和的環(huán)境光照,計算量比環(huán)境貼圖更小 ,適合于動態(tài)環(huán)境

ShaderX2: Shader Programming Tips & Tricks with DirectX 9 ?中?Efficient Evaluation of Irradiance?Environment Maps 一文有詳細(xì)解釋。

Functions can be represented/approximated
using basis functions

2.precomputed radiance transfer 預(yù)計算輻射度,這個方法實際上市將光照方程簡化近似,離線計算各頂點或者像素的球諧系數(shù),并壓縮存儲到頂點或者像素上,運行時重建光照,不適合于動態(tài)環(huán)境,可用于Lightmapping

ShaderX2: Shader Programming Tips & Tricks with DirectX 9 ?中?Practical Precomputed RadianceTransfer?一文有詳細(xì)解釋。

Single Spherical Harmonic Lighting Shader?

(失效鏈接)

https://www.assetstore.unity3d.com/en/#!/content/10307

(某引擎 ppt)

Adding Spherical Harmonic Lighting to the Sushi Engine (amd.com)

理論參考

(第2個鏈接說的比較好,第1個鏈接是純數(shù)學(xué)??)

1.Unity Shader球諧光照解析-騰訊游戲?qū)W堂 (qq.com)

2.球諧光照(spherical harmonic lighting)解析-騰訊游戲?qū)W堂 (qq.com)

3.Unity3D的全局光照和陰影:下篇(unity3D中的球諧光照和SH球諧函數(shù)、unity實時陰影抗鋸齒解決方案) | 電子創(chuàng)新網(wǎng) Imgtec 社區(qū) (eetrend.com):優(yōu)化向,不建議直接看

4.固定角色的間接光照 - 惡毒的狗 | Bad Fat Dog (baddogzz.github.io):說了一些關(guān)鍵字

5.球諧光照 (huailiang.github.io):自由引擎和unity引擎對比,說了一些理論,有截圖

總結(jié)

以上是生活随笔為你收集整理的Unity3d的ShadeSH9环境光的球谐函数的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。