Я новичок в шейдерах и не могу понять, почему функция mod() не работает так, как я ожидал. Я пишу шейдер для SKScene в SpriteKit, используя Xcode. Я могу изменить весь экран красного цвета, поэтому я знаю, что шейдер применяется к сцене. Было бы здорово, если бы кто-нибудь мог взглянуть на приведенный ниже код и помочь мне.Изменение 4-го пикселя с шейдером
Благодаря
vec2 xy = gl_FragCoord.xy;
vec4 colour = vec4(0.0 ,0.0 ,0.0 ,1.0);
float m = mod(xy.x, 3.0);
if (m == 0.0) {
// never going here
colour.r = 1.0;//turn it red
}
gl_FragColor = colour;
Что именно вы ожидаете и как оно не работает? – thanksd
Я ожидаю увидеть черный экран с красными вертикальными линиями каждый третий пиксель. Я ожидал, что значение от 0 до 2 будет возвращено. Экран всегда черный. кажется, что m никогда не равно нулю. – textfield
Попробуйте изменить выражение modulo на 'float m = mod (xy.x, 4.0)' и ваш if-statement на 'if (int (m) == 0) {'. – 0x141E