[程式] 如何讀取Rendertexture的深度資訊

看板GameDesign (遊戲設計)作者 (苦味)時間7年前 (2017/10/14 00:36), 7年前編輯推噓1(109)
留言10則, 3人參與, 7年前最新討論串1/1
最近因為這東西卡好幾天了, 希望有經驗的前輩能夠幫忙看一下 想請問有沒有辦法能夠在shader中使用render texture的depth buffer 也就是說, 我有一個camera 是render到render texture 有一個效果我需要讀取render texture中的depth 資訊 但是問題來了, 在render texture中我唯一找得到跟depth有關係的東西是 rendertexture.depthBuffer, 但是這東西沒有辦法丟進material 中 的setTexture 參數, 我也查不到有甚麼辦法能夠把render buffer轉成 texture的方式 雖然的確是有辦法可以繞過這個限制, 例如說可以建立兩個render texture 一個是color, 一個是depth, 然後再用 _sceneCamera.SetTargetBuffers(_renderTexture.colorBuffer, _depthTexture.depthBuffer); 這方法來抓depth value 但是這方法不適用於當我想使用post processing的時候, 當我想要用PP時 我唯一能讓該camera成功有PP的方式就是 _sceneCamera.targetTexture = _renderTexture; 但這方法又會沒辦法讓我讀取depth texture 後來我又嘗試把 depbuffer轉成textture2D _renderTexture = new RenderTexture(Screen.width, Screen.height, 24, RenderTextureFormat.Default); _renderTexture.Create(); _textDepth = Texture2D.CreateExternalTexture(_renderTexture.width, _renderTexture.height, TextureFormat.RGB24, false, false, _renderTexture.GetNativeDepthBufferPtr()); 但是unity直接crash 希望我的解釋夠清楚 感謝回答 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 24.210.62.187 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1507912584.A.430.html ※ 編輯: Ninja5566 (24.210.62.187), 10/14/2017 01:11:54

10/14 01:49, 7年前 , 1F
官方doc說可以用_LastCameraDepthTexture 抓上一個
10/14 01:49, 1F

10/14 01:49, 7年前 , 2F
camera輸出的depth buffer,不知道是不是你想要的
10/14 01:49, 2F

10/14 01:50, 7年前 , 3F
10/14 01:50, 3F

10/14 04:24, 7年前 , 4F
這我剛剛也試過了, 似乎是不行
10/14 04:24, 4F

10/14 04:41, 7年前 , 5F
看來暴力解是直接再用個camera抓depth..很蠢但是至少
10/14 04:41, 5F

10/14 04:41, 7年前 , 6F
有用...
10/14 04:41, 6F

10/14 09:11, 7年前 , 7F
試了一下,_LastCameraDepthTexture確實可以抓到Depth
10/14 09:11, 7F

10/14 09:12, 7年前 , 8F
原po有確定Camera.depthTextureMode設為Depth嗎?
10/14 09:12, 8F

10/14 20:42, 7年前 , 9F
我發現我不能用這方法的可能原因是因為我有改過
10/14 20:42, 9F

10/14 20:43, 7年前 , 10F
shader, 有時候會丟掉一些pixel, 晚點再試試看好了
10/14 20:43, 10F
文章代碼(AID): #1PuEk8Gm (GameDesign)
文章代碼(AID): #1PuEk8Gm (GameDesign)