首先貼上大佬的
unity urp 移動平台的螢幕空間平面反射(sspr)趟坑記
幽靈行動荒野中的螢幕空間平面反射
graphicslab project 之 screen space planar reflection
【siggraph 2017】optimized pixel-projected reflections for planar reflectors
本文主要以上述第三篇blog為基礎,將spr改寫成傳統的渲染管線
從srp到傳統渲染管線注意點:
1、明確一下shaderresource
可正常使用,已驗證
2、最終採用commandbuffer
對原**進行移植
3、重點:4張需要傳入computeshader
的rendertexture
4、在onrenderimage
,通過graphics.blit()
獲取colortex
和depthtex
,通過settexture
傳入comupteshader
a. `depthtexture = rendertexture.gettemporary(width, height, 16,
rendertextureformat.r16);`
b.返回的depth是非線性的,是ndc座標下的depth
c.深度圖通過掛載深度材質獲取
d.camera需要開啟depth模式 `mcamera.depthtexturemode |=
depthtexturemode.depth;`)
e.在函式末尾使用`rendertexture.releasetemporary(depthtexture);` 和
`rendertexture.releasetemporary(colortexture);`釋放colortex和depthtex
具體可參考 unity commandbuffer或是camera重定向rendertarget的colorbuffer & depthbuffer
5、projection矩陣使用gl.getgpuprojectionmatrix(mcamera.projectionmatrix, true);
獲取
6、使用graphics.executecommandbuffer(cmd);
執行commandbuffer
未踩完的坑:
1、computeshader在同步的地底層圖形api中的呼叫需要區分,如dx11和opengl中預設初值不同
2、只實現了水平面的平面反射,其他角度的平面可以參考steven大佬的實現
中途踩過的坑:
1、深度圖的獲取 shader編寫時必須加上fallback 「diffuse」,才能在自定義的shader中加入深度值
2、從cpu向gup傳值時,必須先在start中使用(rendertexture) ***.create()建立例項,否則gpu不能繫結此rendertexture
unity compute shader 例子
3、compute shader 的numthreads的數值是有大小限制的,具體如下表所示
compute shader
maximum z
maximum threads (xyz)
cs_4_x
1764
cs_5_0
641024
4、注意unity呼叫的api平台時dx還是opengl
5、uv對映需要重新計算
6、unity 七種座標系統詳解與互相轉換的方法
7、unity中rendertexture詳解以及它的用途
8、unity shader-command buffer的使用(景深與描邊效果重置版)
9、systeminfo獲取系統引數
10、unity commandbuffer或是camera重定向rendertarget的colorbuffer & depthbuffer
ssr踩坑記錄:
1、kode80ssr
Python 踩坑記錄
1.浮點數判斷 工作中遇到類似下面邏輯判斷 i 1 while i 1.5 i i 0.1 print i在想象中i應該停止在1.5就不輸出了,但是實際的輸出結果是無限迴圈。這是因為在計算機的邏輯中,浮點數的儲存規則決定了不是所有的浮點數都能準確表示,有些是不準確的,只是無限接近。如0.1轉換為二進...
Java踩坑記錄
1.quartz整合spring框架service層物件注入為null解決方案 jobdetailfactorybean中注入的是乙個cn.itcast.quartz.hellojob實現類的全路徑,底層會反射建立出乙個hellojob的物件,但是該物件不是由spring管理的,所以業務層的物件無法...
SSD踩坑記錄
原github專案位址,借用大神的模型自己訓練ssd 1 error default maxpoolingop only supports nhwc on device type cpu data format nchw 修改為 nhwc 2 關於dataset name 將影象資料轉換為tfrec...