SSPR 踩坑記錄

2021-10-09 01:33:47 字數 2106 閱讀 4025

首先貼上大佬的

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張需要傳入computeshaderrendertexture

4、在onrenderimage,通過graphics.blit()獲取colortexdepthtex,通過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...