2013-12-08 39 views
-1

我在Nexus 7上嘗試着下面的着色器,我發現它不能按預期工作。glsl着色器在不同的設備上以不同的方式工作

http://www.iquilezles.org/apps/shadertoy/index2.html?p=flower

綠色旋轉背景中的Nexus 7只是缺少(也有類似的Adreno 300系列GPU的一些其它設備)

可以在任何一個可以給任何暗示,爲什麼這是怎麼回事?

+0

我在該webgl示例中看不到「綠色,旋轉的背景」。你爲什麼認爲應該有一個? – derhass

+0

derhass,這是我在談論http://imgur.com/ISaQFSx的形象。你是否得到了同樣的圖像? – user1109536

+0

不是。背景中的綠色條紋丟失。 – derhass

回答

0

着色器有些破損。我可以調整它通過改變原有線路

gl_FragColor = vec4(
    col, 
    col-h*0.5+r*.2 + 0.35*h*(1.0-r), 
    col-h*r + 0.1*h*(1.0-r), 
    1.0); 

看到綠色背景

gl_FragColor = vec4(
    col, 
    max(col,0.0)-h*0.5+r*.2 + 0.35*h*(1.0-r), 
    max(col,0.0)-h*r + 0.1*h*(1.0-r), 
    1.0); 

因爲山坳似乎是< 0的區花之外。我真的不知道如何看到一個符合實現的綠色背景。

+0

謝謝了。有效。順便說一下,你是如何解決這個問題的。我嘗試給col提供一個負值,綠色仍然顯示出來。也許與我的Geforce GPU有關。 – user1109536

+0

@ user1109536:我修正了這個問題,我是如何描述它的。雖然我不確定這是否是最好的解決方案。此外,我還使用Geforce GPU進行測試(660TI,nVidia 331.17驅動程序,Linux,Firefox 25.0.1)。 – derhass

+0

如果繪製到浮點顏色緩衝區中,默認行爲是*** not ***,以便在從片段着色器輸出後將顏色限制在[0.0,1.0]範圍內。現在,默認的幀緩衝區通常是固定點,並且定點顏色緩衝區的默認夾持行爲是鉗位到範圍[0.0,1.0]。如果您使用負面顏色進行混合,您可能會看到一些內容。我不得不想象OP會理解定點和浮點像素格式之間的差異,儘管如果這實際上是問題的原因。這聽起來更像是驅動程序錯誤,如果有的話。 –

相關問題