LUT實現簡單濾鏡效果

2021-09-06 23:08:24 字數 1656 閱讀 6040

1.大部分濾鏡是通過基礎的「**、對比度、色溫等」配合濾鏡演算法生成的一種色彩模式

2.上述演算法在遊戲處理中複雜度很高,所以我們一些簡單的色彩濾鏡效果可以使用lut的方式

lut(look up table)指的是「顏色查詢表」,是原始顏色通過lut的顏色查詢表對映到新的色彩上去。是單獨針對色彩空間的一種管理和轉換。

1.兩者雖然都能讓的色彩發生變化,但是工作原理不同。lut只能針對色彩路徑轉換,濾鏡可以通過演算法針對進行更多特徵性改變。

2.比如一些顆粒化,模糊等不是簡單處理畫素顏色,所以不能通過lut實現

3.lut的優點是把複雜的計算公式放入了的前期處理,後期使用只需要查詢對應顏色即可。

512*16格式貼圖

1024*32格式貼圖

1.取消mipmap設定

2.format格式要改為rgb24

3.2d方式 貼圖要把 anisolevel 等級設定為0

4.3d方式 開啟read/write enabled

5.貼圖的srgb關閉,否則線性空間會有問題

1.螢幕後處理中使用

2.遊戲中部分功能的使用,比如眼睛的色彩空間貼圖更換

1.本文使用的是 512*16的貼圖格式

2.在ps中進行了「色相/飽和度」「曲線」「**濾鏡」「漸變對映」等操作

1.把上述步驟使用了ps中「色相/飽和度」「曲線」「**濾鏡」「漸變對映」 ,在lut原圖上進行操作

2.在遊戲中使用操作後的貼圖

1.lut有2d和3d貼圖兩種方式使用

2.由於部分機型和unity的版本原因,不支援3dshader貼圖,只能使用2d貼圖傳入方式

3.2d方式相容性好,但2d方式要消耗更多的gpu算力

sampler2d   tex   為ps修改後的標準2d貼圖

half3     color   為原始取樣值

half3    offset   計算的偏移值,

offset 計算方式如下:

vector3(1f /貼圖寬度 , 1f /貼圖高度, 貼圖高度 - 1f)

public void settexture3d(texture2d temp2dtex)}}

if (m_texture3d)

destroyimmediate(m_texture3d);

m_texture3d = new texture3d(dim, dim, dim, textureformat.argb32, false);

m_texture3d.setpixels(newc);}}

邏輯**中生成一張3d貼圖

主要語句如下:

tex3d(_luttex3d, tex.rgb * _scale + _offset).rgb

引數含義如下:

_luttex3d   為生成的3d貼圖

_scale    (貼圖寬度 - 1) / (1.0f *貼圖寬度 )

_offset    1.0f / (2.0f *貼圖寬度 )

Paint 濾鏡效果

lightingcolorfliter r r mul.r 0xff add.r g g mul.g 0xff add.g b b mul.b 0xff add.b 紅色去除掉 lightingcolorfilter lighting new lightingcolorfilter 0x00ffff...

IE濾鏡效果

濾鏡切換效果 meta content revealtrans transition 14,duration 3.0 http equiv page enter 頁面 style filter revealtrans duration 1,transition 6 css revealtrans濾鏡...

PS濾鏡效果

photoshop濾鏡基本可以分為三個部分 內闕濾鏡 內建濾鏡 也就是photoshop自帶的濾鏡 外掛程式濾鏡 也就是第三方濾鏡 內闕濾鏡指內闕於photoshop程式內部的濾鏡,共有6組24個濾鏡。內建濾鏡指photoshop預設安裝時,photoshop安裝程式自動安裝到pluging目錄下的...