#qt #qml #glsl
#qt #qml #glsl
Вопрос:
Я пытаюсь вычислить «циклическое смещение» в моем шейдере GLSL (т. Е. Вычислить value offset
, привязанный к [0, 1]
диапазону).
В настоящее время я в конечном итоге прибегаю к неприятному взлому, включающему множество приведений и умножение / деление на 100, чтобы значения были целыми, чтобы работал integer-mod (%) . Это выглядит примерно так:
float x = float(int((qt_TexCoord0.x timeOffset) * 100.0) % 100) / 100.0
Два вопроса:
1. Есть ли что-то подобное fmod()
, что я мог бы использовать вместо этого?
2. Возможно ли использовать #include's
в шейдерах GLSL? Или мне нужно встроить какой-либо импорт, который я хотел бы выполнить в противном случае?
Ответ №1:
GLSL предоставляет mod()
, который вычисляет x-y*floor(x/y)
, в то время как HLSL fmod()
, я полагаю, вычисляет x-y*trunc(x/y)
https://www.opengl.org/sdk/docs/man4/html/mod.xhtml
На момент написания #include
препроцессор еще недоступен.