#glsl #webgl #regl
Вопрос:
Я кодирую значения в цветах в шейдере и получаю некоторые неожиданные результаты. Я довел это до случая, описанного в этой скрипке, когда захват цвета из текстуры (sampler2D) дает другой результат по сравнению с явным указанием того же цвета, что и vec4.
vec4 c = method1(v_texcoord);//explicitly create color
vec4 px = method2(v_texcoord);//grab color from image
//confirm that these are the same value
if (px!=c) return;
Если мы используем c напрямую, мы получим другой результат по сравнению с тем, если мы используем px — даже если мы только что подтвердили, что они имеют одинаковое значение.
Следующая строка в коде бессмысленна в том смысле, что эти значения равны (только что проверено выше). Но комментирование / раскомментирование этой строки дает другой результат.
//c = px; //uncomment = red light; comment out = green light
Попробуйте это сами в следующей скрипке:
https://jsfiddle.net/9zo5fpd0/31/
Я пробовал разные уровни точности, а также разные способы построения цвета по изображению, но, похоже, единственная разница заключается в том, является ли источником само изображение или нет. Мои знания о внутренней работе графических процессоров, работающих с шейдерным кодом, ограничены, поэтому я понятия не имею, в чем будет заключаться существенная разница в этих 2 методах. Любая помощь будет признательна.