日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果 - 伪 HDR/Blow

發布時間:2023/11/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果 - 伪 HDR/Blow 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

所謂HDR就是高動態范圍的意思。在普通的顯示器和位圖里,每通道都是8-bit,也就是說RGB分量的范圍都是0-255,這用來表示現實中的顏色顯然是遠遠不夠的。現實中的圖像的動態范圍遠遠大的多,那么如何在現有的顯示設備里盡可能的保持更大的動態范圍,而且讓它能更符合人眼的習慣就成了圖形學研究的一個熱點。通常真正的HDR的做法都是采用浮點紋理,把渲染運算的過程中,我們使用16bit的動態范圍來保存運算結果,然后對運算結果進行分析,求出這個圖像的中間灰度值,然后對圖像進行調整映射到LDR的設備中。但是這樣的算法有兩個非常耗資源的過程,其中一個是浮點紋理,另外一個就是求圖像中間灰度(通常情況是把圖像不停的渲染到RenderTarget,每渲染一次,圖像大小縮小一半,直到縮小到1x1大,一個1024 x1024的圖像需要渲染10次!)。因此雖然HDR的效果非常漂亮,但是目前還是只有為數不多的產品采用了這樣的算法,大部分都是采用的偽HDR+blow效果。

偽HDR效果通常是重新調整圖像的亮度曲線,讓亮的更亮,暗的更暗一些,而Blow效果則是圖像的亮度擴散開來,產生柔和的效果。

在這里采用一個二次曲線來重新調整圖像的亮度,這個曲線的方程是

x [ (2-4k) x + 4k-1 ).

K的取值范圍為0.5 – 2.0

經過這個公式調整以后,圖像上亮的區域將更加的亮,并且整體亮度會提高。那么接下來,如何使圖像的亮度擴散開來呢?一種可行的方法就是對場景圖像做一次downsample。把它變成原來的1/4次大小,那樣就等于亮度往外擴散了4x4個象素的區域。

技術方案已經基本有了。接下來將要在RenderMonkey里實現它,和前面的例子不同,這里需要使用RenderMonkey的多pass渲染:

第一個pass我們先對圖像進行downsample操作。首先在原來的pass前增加一個新的pass,并命名為downsample pass。然后建立一個render to texture的紋理節點,設定它的大小(原圖像大小的1/4),并在新建立的pass里建立一個render target的節點指向它。這樣,這個pass的渲染結果就會保存到這個render to texture中。這個pass的pixel shader只要使用前面模糊效果的shader就可以了。

接下來,將另外一個pass命名為render pass,并增加一個新的紋理對象。并把紋理對象指向剛才增加的render to texture,以便能在該pass中使用這個downsample過的圖像。然后增加一個float類型的變量,用來表示上面公式中提到的k值;最終工作區的結構如下圖:

接下來編輯render pass的pixel shader。代碼如下:

下面是原圖像和經過處理后圖像的對比:

點擊查看大圖
原圖

?


k = 1.1


k = 1.6

圖:經過偽HDR+Blow處理過的圖像和原圖的對比

轉載于:https://www.cnblogs.com/lancidie/archive/2012/01/19/2326840.html

總結

以上是生活随笔為你收集整理的Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果 - 伪 HDR/Blow的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。