GLSL - перенос значения между границами
9 просмотра
1 ответ
Как можно обернуть значение вокруг произвольных границ? Я хочу избежать проверок, поэтому я пришел к этому, который работает для нижней границы, используя шаг:
float check = step(-1, val)*2.0-1.0;
val *= check;
Это выведет любое значение, которое имеет вектор "val", когда оно больше -1, и обернется и перепрыгнет на 1, когда оно превысит его.
Моя цель состоит в том, чтобы, когда значение превышает определенный порог, оно «оборачивается» и начинается с противоположной стороны экрана. Таким образом, если движущаяся точка, например, превышает 1, она снова появится на экране в позиции -1 и будет продолжать двигаться дальше. С другой стороны, если ниже -1, он появится в позиции 1 и будет продолжать двигаться оттуда.
Я застрял на некоторое время и не могу обернуть голову вокруг этого ...
Спасибо!
Автор: Darien Brito Источник Размещён: 17.05.2019 02:57Ответы (1)
0 плюса
Моя цель состоит в том, чтобы, когда значение превышает определенный порог, оно «оборачивается» и начинается с противоположной стороны экрана. Так, если движущаяся точка, например, превышает 1, она снова появится на экране в положении -1,
То, что вы хотите сделать, может быть достигнуто с помощью функции mod(x, y)
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/mod.xhtml , которая возвращает остаток от деления x на y:
y = mod(x+1.0, 2.0)-1.0
Обратите внимание, что функция использует mod()
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/mod.xhtml поддержку genType
. Это означает x
и y
может даже иметь тип vec2
, vec3
или vec4
. Конечно x
и y
должны быть однотипными.
Вопросы из категории :
- glsl Случайные / шумовые функции для GLSL
- glsl Профилирование производительности шейдеров OpenGL
- glsl GLSL - проблема операции левого и правого сдвига
- glsl WebGL - есть ли альтернатива встраиванию шейдеров в HTML?
- glsl sampler1D не поддерживается в nVidia GLSL?
- glsl Какое правильное расширение файла для шейдеров GLSL?
- shader Какую производительность добавляют условные и неиспользуемые сэмплеры / текстуры в пиксельные шейдеры SM2 / 3?
- shader Как я могу установить константы шейдера при регистрации в glsl?
- shader Браузер для шейдеров CSS?
- shader цилиндр-самозванец в GLSL
- wrap Как настроить ckeditor, чтобы не переносить содержимое в блок <p>?
- wrap Алгоритм рекурсивного Word Wrap
- wrap Запретить перенос встроенного блока, но разрешить перенос содержимого
- wrap CSS вертикальный центр по кругу
- wrap Почему фильтр the_title () также применяется в заголовке меню?
- wrap Как обернуть и выровнять комментарии в коде Python