我在Nexus 7上嘗試着下面的着色器,我發現它不能按預期工作。glsl着色器在不同的設備上以不同的方式工作
http://www.iquilezles.org/apps/shadertoy/index2.html?p=flower
綠色旋轉背景中的Nexus 7只是缺少(也有類似的Adreno 300系列GPU的一些其它設備)
可以在任何一個可以給任何暗示,爲什麼這是怎麼回事?
我在Nexus 7上嘗試着下面的着色器,我發現它不能按預期工作。glsl着色器在不同的設備上以不同的方式工作
http://www.iquilezles.org/apps/shadertoy/index2.html?p=flower
綠色旋轉背景中的Nexus 7只是缺少(也有類似的Adreno 300系列GPU的一些其它設備)
可以在任何一個可以給任何暗示,爲什麼這是怎麼回事?
着色器有些破損。我可以調整它通過改變原有線路
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的區花之外。我真的不知道如何看到一個符合實現的綠色背景。
謝謝了。有效。順便說一下,你是如何解決這個問題的。我嘗試給col提供一個負值,綠色仍然顯示出來。也許與我的Geforce GPU有關。 – user1109536
@ user1109536:我修正了這個問題,我是如何描述它的。雖然我不確定這是否是最好的解決方案。此外,我還使用Geforce GPU進行測試(660TI,nVidia 331.17驅動程序,Linux,Firefox 25.0.1)。 – derhass
如果繪製到浮點顏色緩衝區中,默認行爲是*** not ***,以便在從片段着色器輸出後將顏色限制在[0.0,1.0]範圍內。現在,默認的幀緩衝區通常是固定點,並且定點顏色緩衝區的默認夾持行爲是鉗位到範圍[0.0,1.0]。如果您使用負面顏色進行混合,您可能會看到一些內容。我不得不想象OP會理解定點和浮點像素格式之間的差異,儘管如果這實際上是問題的原因。這聽起來更像是驅動程序錯誤,如果有的話。 –
我在該webgl示例中看不到「綠色,旋轉的背景」。你爲什麼認爲應該有一個? – derhass
derhass,這是我在談論http://imgur.com/ISaQFSx的形象。你是否得到了同樣的圖像? – user1109536
不是。背景中的綠色條紋丟失。 – derhass