URP | Reflection Probes 反射探針

增加天空盒
場(chǎng)景增加天空盒,
準(zhǔn)備好天空盒的素材,創(chuàng)建Cube

設(shè)置


現(xiàn)在我們創(chuàng)建好天空盒了,我們接下來(lái)在Shader里反射天空盒的效果。
反射Shader
創(chuàng)建反射變量控制反射強(qiáng)度
頂點(diǎn)結(jié)構(gòu)體
輸入法線 ,位置,UV信息
片元結(jié)構(gòu)體輸出
頂點(diǎn)著色器階段計(jì)算位置信息
片元著色器階段
計(jì)算出反射向量,
使用反射向量奪取Cube
效果

目前我們是可以看到反射效果,但是這樣的方法只能反射天空盒。 那我們下面使用反射探針?lè)瓷鋱?chǎng)景中的物體。
反射探針
反射探針就是當(dāng)前場(chǎng)景烘焙好一張環(huán)境貼圖,用來(lái)模擬反射周?chē)矬w的光照信息。
創(chuàng)建反射探針
創(chuàng)建反射探針 GameObject

就可以創(chuàng)建一個(gè)反射探針

這個(gè)黃色區(qū)域是反射區(qū)域,在這個(gè)區(qū)域內(nèi)的物體才會(huì)反射

反射探針的屬性


Bake 類似刷新

設(shè)置光照
開(kāi)啟燈光烘焙

反射物體設(shè)置
被烘焙的物體為靜態(tài)物體

設(shè)置物體是否接受反射,默認(rèn)是混合反射

注意:反射探針只反射靜態(tài)物體,如果不勾選靜態(tài)物體,不會(huì)反射。
這里的代碼是一樣的。
效果



目前這里的方式,這是獲取場(chǎng)景的反射,我們也可以放到Shader里,指定固定Cube
CubeMap
定義一個(gè)Cube變量,定義一個(gè)旋轉(zhuǎn)的角度變量
定義 CUBE 類型
貼圖
效果

這樣只是把效果直接反射到物體上,沒(méi)有粗糙度控制。
目前我們想使用角度控制CubeMap的旋轉(zhuǎn)。
這里定義一個(gè)函數(shù)
使用這個(gè)函數(shù)改變反射向量
效果

代碼
MatCap反射
MatCap是一種低成本的反射效果,
核心就是頂點(diǎn)法線從世界空間轉(zhuǎn)換成攝像機(jī)空間,在讀取一張圖。
擴(kuò)展
用一張MatCap貼圖作為渲染好的漫反射貼圖
用物體表面的法線對(duì)該貼圖進(jìn)行采樣
Shader Graph

準(zhǔn)備倆張MatCap貼圖

定義1個(gè)貼圖變量。
目前是普通效果,我們需要把法線信息輸出到UV上
這樣會(huì)導(dǎo)致UV貼圖亂了,我們需要修改一下顯示位置信息。
定義一個(gè)函數(shù),計(jì)算UV顯示
在片元著色器階段,調(diào)用函數(shù)計(jì)算出法線的UV信息
輸出效果
