Вторник, 26 Ноября 2024, 09:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Почему не работают шейдеры?
DeveloperGameДата: Пятница, 27 Августа 2021, 20:48 | Сообщение # 1
частый гость
Сейчас нет на сайте
Делаю простое свечение чтобы точку у курсора мыши подсвечивалась, создал объект назвала obj_movinglight. В нем добавил action->step, с кодом x = mouse_x; y = mouse_y; чтобы он двигался за мышкой. Создал шейдеры и в нем изменил код.

Код

//////////////
//Vertex
//////////////
attribute vec3 in_Position;                  // (x,y,z)
varying vec2 pos;

void main()
{
    vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
    gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
    pos = in_Position.xy;
    
}
///////////////////////
//Fragment
//////////////////////
varying vec2 pos;

uniform vec2 u_pos;

void main()
{
   // gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );
     vec2 dis = pos - u_pos;
    float str = 1./sqrt(dis.x*dis.x + dis.y*dis.y);
    gl_FragColor = vec4(vec3(str),1.);
}


Дальше объект obj_setup, создал в нем два действия "Create" и "Draw". Добавил obj_setup в комнату.
В Create записал.
Код

u_pos = shader_get_uniform(shd_light,"u_pos");

В Draw записал.
Код

var _u_pos = u_pos;
with(obj_light){
  shader_set(shd_light);
  shader_set_uniform_f(_u_pos,x,y)
  draw_rectangle(0,0,320,180,0);
  shader_reset();
}


В итоге главный объект двигается за мышкой но никакого свечения не происходит. Даже ошибок нет, поэтому не понятно, что исправлять. В чем может быть проблема?

Добавлено (27 Августа 2021, 23:13)
---------------------------------------------
Все нашел в чем проблема, надо было obj_movinglight установить parent->obj_light.


Developer online game

Сообщение отредактировал DeveloperGame - Пятница, 27 Августа 2021, 20:52
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг