2014-08-28 78 views
1

欲樣品與分離三種組分梯度,而不是一個組合梯度片段着色器用於採樣3個分量梯度VS一個RGB

我嘗試:

out.x = texture2D(inputTexture, vec2(color.x, 0)).x ; 
out.y = texture2D(inputTexture, vec2(color.y, 1)).y ; 
out.z = texture2D(inputTexture, vec2(color.z, 2)).z ; 

但它輸出弄亂顏色與很多噪音。

這三個用3像素高度分量梯度:

這些圖像施加後我

out.x = texture2D(inputTexture, vec2(color.x, 0.0)).x ; 
out.y = texture2D(inputTexture, vec2(color.y, 0.5)).y ; 
out.z = texture2D(inputTexture, vec2(color.z, 0.9)).z ; 

enter image description here =>enter image description here

回答

2

紋理座標存儲在0-範圍1,不在texel空間中,所以當你要求一個像素的座標爲2的時候,你要求的是紋理上的東西,你得到的結果將取決於你是否夾緊或纏繞g紋理。

嘗試請求的0.0,0.5和0.9

更好的解決方案在y COORDS可能是使用一個紋理具有單個梯度,且單獨地採樣來自該信道。下面的質地和代碼將產生相同的結果:

RampTexture

out.x = texture2D(inputTexture, vec2(color.x, 0)).x ; 
out.y = texture2D(inputTexture, vec2(color.y, 0)).y ; 
out.z = texture2D(inputTexture, vec2(color.z, 0)).z ; 
+0

非常感謝您的回覆,我已經使用在一個像素梯度提到的代碼,它工作正常,但問題是,當我將3個像素合併爲一個時,結果並不是預期的結果,所以我分別對x,y和z嘗試了0.0,0.5和0.9,但結果與深色洋紅色色調一樣嘈雜。我要將兩個示例圖像添加到原始問題中。 – 2014-08-28 18:16:04

+0

是否有你想使用多個漸變而不是一個的原因? – ChrisWebb 2014-08-28 22:58:54

+0

我使用graphist他們有時給我這些地圖,如果我找到一種方法來訪問紋理中的其他梯度線,我也可以加載多個梯度作爲一個紋理,並指向不同的y座標,反對加載一個紋理爲每個漸變。 – 2014-08-28 23:28:47