2013-12-08 3 views
-1

Я пытаюсь использовать этот ниже шейдер на моем Nexus 7, и я вижу, что он не работает должным образом.glsl shader работает по-разному на разных устройствах

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

Зеленый вращающийся фон просто отсутствует в Nexus 7 (а также некоторые другие устройства с графическими процессорами, такими как серии Adreno 300)

Может ли один может дать какой-либо намек на то, почему это происходит?

+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 (660TI, драйвер nVidia 331.17, Linux, Firefox 25.0.1). – derhass

+0

Если вы рисуете в цветном буфере с плавающей запятой, поведение по умолчанию - ***, а не ***, чтобы закрепить цвета в диапазоне [0.0, 1.0] после вывода из фрагментарного шейдера. Теперь буфер кадра по умолчанию обычно является фиксированной точкой, а поведение зажима по умолчанию для буфера с фиксированной точкой - это зажимать диапазон [0.0, 1.0]. Если вы выполняете смешение с отрицательным цветом, вы можете что-то увидеть. Я должен представить, что OP будет понимать разницу между пиксельным форматом с фиксированной точкой и точкой с плавающей точкой, хотя это и было причиной проблемы. Это звучит скорее как ошибка драйвера, если что-нибудь. –