- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
//glsl vertex shader
attribute float mass;
uniform vec3 center;
#define RAD 10.0
const float D = RAD * 2.0;
///////////////////THIS///////////////////
float repeat(float x, float z) {
float dx = distance(x, z);
while(dx > RAD) {
if (x > z) {
x -= D;
} else {
x += D;
}
dx = distance(x, z);
}
return x;
}
///////////////////////////////////////////
vec3 repeat(vec3 x, vec3 y) {
return vec3(dr(x.x, y.x), dr(x.y, y.y), dr(x.z, y.z));
}
void main() {
vec3 pos = position;
pos.z += time;
pos = repeat(pos, center);
vec4 mvPosition = modelViewMatrix * vec4(pos, 1.0);
gl_PointSize = 70.0 * mass;
gl_Position = projectionMatrix * mvPosition;
}
По сути функция repeat должна повторять текстуру (как background-repeat: repeat в css) в зависимости от положения точки центра, короче: двигается центр, двигается и текстура за ним. Мне даже ума не хватает описать это, поэтому формулу сам искал, хватило ума только на это говно. Спустя несколько недель додумался до следующего говна, уже без цикла:
float repeat(float x, float z) {
float mp = x > z ? -1.0 : 1.0;
z += RAD * mp;
float dx = distance(x, z);
float n = floor(dx / D) * D;
x += n*mp;
return x;
}
Тяжело не знать математики. Может местные шизы подскажут как называется такое поведение и как нормальную формулу?
JloJle4Ka 06.05.2021 14:12 # 0
)))))))))
sobakapavlova 06.05.2021 17:26 # 0
MAKAKA 06.05.2021 23:15 # +1
Я писал 2Д игрушки, и ничего сложнее синуса мне не приходилось понимать
Soul_re@ver 06.05.2021 23:34 # +1
MAKAKA 06.05.2021 23:42 # +1
bormand 06.05.2021 14:16 # +4
Удачи там с интеловскими интеграшками. Хотя может свежие уже научились.
sobakapavlova 06.05.2021 17:27 # 0
TOPT 06.05.2021 19:20 # 0
sobakapavlova 06.05.2021 22:51 # 0
TOPT 07.05.2021 05:13 # +2
bormand 06.05.2021 14:19 # +3
Ставишь в настройках текстурного семплера VK_SAMPLER_ADDRESS_MODE_REPEAT (или как оно там в твоём графическом апи) и течёшь. GPU само разберётся.
sobakapavlova 06.05.2021 17:24 # 0
CHayT 06.05.2021 14:20 # +3
P.S. Борманд правильно сказала про то, что OpenGL сам умеет в разные texture sampling, но вопрос был про формулу.
bormand 06.05.2021 14:45 # +2
Для семплера это повторение текстуры, скорее всего, вообще ничего не стоит.
sobakapavlova 06.05.2021 17:25 # +1