[請益] 在Unity中快速Get/Set大量Pixel的方法

看板GameDesign作者 (青柳立夏)時間4年前 (2020/05/19 14:26), 編輯推噓6(6012)
留言18則, 5人參與, 4年前最新討論串1/1
今天想要做的是 假設我有兩個 Texture2D (A / B) 寬跟長不一定(至少都2000+) A 是已經有內容的Texture (從圖片讀來or其他..) B 則是宣告出來的空白的 想要把A中的某些符合條件的像素點到B裡面去的話 有什麼很快的方式嗎? 比如說 A每橫移3格 才把該像素點到B 就會像: 假定--> 寬等於 3000 , 高等於 2000 for (int x = 0; x < 3000; x+=3) { for (int y = 0; y < 2000; y++) { Color thePixel = A.GetPixel(x, y); B.SetPixel(x, y, thePixel); } } 用兩層For迴圈是可以完成, 可是效率應該是最低的 有沒有比較快速的語法或方法可以加速呢 希望版上的大大可以指引點方向 >///< 感謝 !! -- 果我們要把磁鐵棒放進線圈,    線圈會說「不!!不要過來!!」而發出阻力不讓磁鐵棒靠近。  但是如果我們要把放進去的磁鐵棒從線圈拿走,         「傲嬌是一種  線圈反而會說「我…我又沒有叫你走!!」而發出阻力不讓磁鐵棒離開。  自然現象」  這種現象不就是傲嬌嗎!                     新科科人雜誌  所以傲嬌這東西根本不是新梗,19世紀就有科學家發現傲嬌了。     /民明書房 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.20.18 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1589869572.A.F33.html

05/20 00:01, 4年前 , 1F
另外做一個Mask貼圖C來運算?
05/20 00:01, 1F

05/20 14:15, 4年前 , 2F
Compute Shader
05/20 14:15, 2F

05/20 14:28, 4年前 , 3F
blit + shader或compute shader,不管使用何者,shader
05/20 14:28, 3F

05/20 14:28, 4年前 , 4F
負責的都是在一個GPU thread中處理一個像素,執行你的
05/20 14:28, 4F

05/20 14:30, 4年前 , 5F
取值、比較、賦值的邏輯,3000x2000個GPU thread一次
05/20 14:30, 5F

05/20 14:30, 4年前 , 6F
render/dispatch完成
05/20 14:30, 6F

05/20 15:43, 4年前 , 7F
查了一下 感覺完全是shader的功能 該來研究一下了=w=
05/20 15:43, 7F

05/21 01:46, 4年前 , 8F
shader擅長簡單且大量平行的運算
05/21 01:46, 8F

05/21 19:58, 4年前 , 9F
讚嘆Compute Shader !
05/21 19:58, 9F

05/21 19:59, 4年前 , 10F
還沒寫出來 但是突然想到一個問題 如果把這樣的運算用
05/21 19:59, 10F

05/21 20:00, 4年前 , 11F
GPU, 我的資料SIZE這麼大 會不會在送到GPU這段 耗費很
05/21 20:00, 11F

05/21 20:00, 4年前 , 12F
多時間呢
05/21 20:00, 12F

05/21 20:23, 4年前 , 13F
不會,速度很快,我用compute shader做跟你一樣的事,
05/21 20:23, 13F

05/21 20:23, 4年前 , 14F
resolution更大,張數要求更嚴苛,處理速度快到炸
05/21 20:23, 14F

05/21 21:41, 4年前 , 15F
讚嘆Compute Shader, 正在努力研究中 !!
05/21 21:41, 15F

05/22 01:10, 4年前 , 16F
texture已經是在VRAM上的資料了,你做的事情只是給GPU
05/22 01:10, 16F

05/22 01:10, 4年前 , 17F
下指令去存取而已,沒有”送大量資料過去給GPU”這問題
05/22 01:10, 17F

05/22 09:19, 4年前 , 18F
原來如此 !! 讚嘆 !! 感覺這就是我需要的 !!
05/22 09:19, 18F
文章代碼(AID): #1Umtm4yp (GameDesign)