Unity中的顏色

2021-09-25 17:11:40 字數 1204 閱讀 3203

rgb是我們接觸最多的顏色空間,由三個通道表示一幅影象,分別為紅色(r),綠色(g)和藍色(b),這三種顏色的不同組合可以形成幾乎所有的顏色,但是任何顏色都與這三個分量有關,所以連續變換顏色時並不直觀,想對影象的顏色進行調整需要更改這三個分量才行,而自然環境下獲取的影象容易受自然光照、遮擋和陰影等情況的影響,即對亮度比較敏感。而rgb顏色空間的三個分量都與亮度密切相關,即只要亮度改變,三個分量都會隨之相應地改變,而沒有一種更直觀的方式來表達,所以rgb顏色空間適合於顯示系統,卻並不適合於影象處理

在影象處理中使用較多的是hsv顏色空間,hsv模式也稱作hsb或hsl,它比rgb更接近人們對彩色的感知經驗,非常直觀地表達顏色的色調、鮮豔程度和明暗程度,方便進行顏色的對比

h(hue)代表色相,是指取值範圍在0-360°的圓心角,每個角度可以代表一種顏色。s(saturation)代表飽和度。v(value)代表明度

unity中可以建立兩種顏色:color和color32

——color:接收的是乙個[0,1]的值

image.color = new color(1, 1, 1, 1);

——color32:接收的是乙個[0,255]的值

image.color = new color32(255, 255, 255, 255);
——十六進製制顏色與rgb互轉

//rgba轉十六進製制

colorutility.tohtmlstringrgba(color.red);

//rgb轉十六進製制

colorutility.tohtmlstringrgb(color.red);

//十六進製制轉rgba

color newcolor;

colorutility.tryparsehtmlstring("#ffffff", out newcolor);

——hsv與rgb互轉

//rgb轉hsv

float color_h;

float color_s;

float color_v;

color.rgbtohsv(color.red, out color_h, out color_s, out color_v);

//hsv轉rgb

color.hsvtorgb(1, 1, 1);

關於 unity 中顏色空間問題的總結

首先官方文件肯定是我們參考的重點,最重要的就是這幾篇文章了 這裡總結一下用法 有乙個大前提是,顯示器在顯示顏色前,總是會進行一次gamma矯正。首先是對非線性輸入的紋理資源的處理 這裡主要指的是貼圖,像法線一類的資訊紋理理論上只是為了放資料用的,可以算是線性的 在2017版本中紋理資源上的那個 sr...

Unity的Shader如何控制投影顏色

細節慢慢補充,有幾個需要注意的地方,必須要有接收投影的pass也就是name是shadowcollector的,必須新增 pragma multi compile fwdbase,物體的著色器必須有tag 裡面的 處理投影要在接收投影的物體shader裡。隨後是三個巨集。shadow coords這...

unity 顏色空間linear下色差問題

我們專案美術是在linear下製作資源的,做一些比較真實一點的效果會比較容易些,在editer模式下看是比較精美的,但是打包完放在手機上,明顯有一些色差問題,如圖 在手機上的效果 在editer下的效果 後來找了很久,最終發現是lightmap計算方式不一致導致的,直接修改unity的unitycg...