Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: AndreiiCx en Mayo 18, 2013, 10:34:10 PM

Título: Blur en 3D (con surfaces)
Publicado por: AndreiiCx en Mayo 18, 2013, 10:34:10 PM
El problema es el siguiente:

Quiero hacer que la vista se haga borrosa, había leído que esto se logra, dibujando a una surface pequeña todo, y luego estrechándola al tamaño de la ventana, lo que pasa es que no se si es por el 3D, o por que estoy haciendo algo mal, pero no se hace borrosa, se mantiene tal y como es.

Especificaiones:
[spoiler]Utilizo 2 surfaces, una surface "srfcnormal", que es donde va todo tal y como es, y la surface "srfcblur" que es en la cual quiero hacer el blur, pondré los codigos de mi obCamctrl para hacer las surfaces:
Create:
[gml]srfcblur=surface_create(256,150) //un cuarto de la ventana
srfcnormal=surface_create(1024,600) //ventana completa
[/gml]

Step:
[gml]surface_set_target(srfcnormal)
d3d_set_projection(x,y+400,300,x,y,0,0,-1,0);
d3d_draw_floor(0,0,0,1024,768,0,background_get_texture(tx_002),16,12)
with obBlock
  {
    d3d_draw_block(x,y,0,x+32,y+32,32,background_get_texture(tx_001),1,1)
  }
surface_reset_target()

surface_set_target(srfcblur)
d3d_set_projection(x,y+400,300,x,y,0,0,-1,0);
d3d_draw_floor(0,0,0,1024,768,0,background_get_texture(tx_002),16,12)
with obBlock
  {
    d3d_draw_block(x,y,0,x+32,y+32,32,background_get_texture(tx_001),1,1)
  }
surface_reset_target()[/gml]

Draw:
[gml]draw_surface(srfcnormal,0,0)
draw_set_blend_mode(bm_add);
draw_surface_ext(srfcblur,0,0,2,2,0,c_white,1)[/gml][/spoiler]

De antemano muchas gracias a cualquier respuesta, si algo no se entiende me avisan, lo mismo si necesitan mas información.

PD: Uso bm_add para que se vea con cierto brillo el blur, no creo que sea lo que esté afectando.
Título: Re:Blur en 3D (con surfaces)
Publicado por: romon_28 en Mayo 22, 2013, 03:47:04 AM
creo que no se puede usar el 3D la surface.

<Surfaces do not work correctly with 3D mode. You can use them while not in 3D mode (by calling d3d_end() before using them), but once you start 3D mode again the surfaces will be destroyed. >

Pero se que exite un dll que sirve para eso.. El problema que no se como se llama pero poden encontrarlo en el foro de yoyogame googleando un poco.

aca te dejo un enlace para que veas:
http://sandbox.yoyogames.com/games/191653-surface-fix-source/send_download?code=b3e565e632a8cfe1529f9b50061a0652466075b8 (http://sandbox.yoyogames.com/games/191653-surface-fix-source/send_download?code=b3e565e632a8cfe1529f9b50061a0652466075b8)
Título: Re:Blur en 3D (con surfaces)
Publicado por: AndreiiCx en Mayo 25, 2013, 08:49:49 PM
Si claro, pero esto era en las versiones anteriores a la 8.1, en GMS y en la 8.1 esto viene arreglado C: ya las surfaces estan funcionando correctamente, y de hecho, tengo un efecto de luciernagas hecho con las surfaces y con 3D, que funciona correctamente, pero no eh podido lograr un desenfoque ):
Título: Re:Blur en 3D (con surfaces)
Publicado por: AndreiiCx en Mayo 30, 2013, 02:09:07 AM
Bump? (no leí nada en las reglas que lo prohibiera, son mas de 48 horas también xD)
Título: Re:Blur en 3D (con surfaces)
Publicado por: brunoxzx en Mayo 30, 2013, 04:44:17 AM
Viendo tu código de pasada veo que tiene errores, ¿no se supone que en la segunda superficie deberías estar dibujando la primera pero en pequeño?. Como sea creo que el método que usas de re-dibujar todos los bloques de nuevo no es el mejor así que intentaré escribir uno nuevo a lo rápido que haga lo que dices.


Si según dices el efecto se hace dibujando la view en pequeño y después en grande, se podría hacer de esté modo.

Evento create.
[gml]
sur=surface_create(view_wview[0], view_hview[0]);
view_surface_id[0]=sur;
sur2=surface_create(view_wview[0] div 4, view_hview[0] div 4);
[/gml]

¡Evento draw GUI!
[gml]
surface_set_target(sur2);
d3d_draw_floor(0,0,0, view_wview[0] div 4, view_hview[0] div 4, 0, surface_get_texture(sur), 1, 1);
surface_reset_target();

d3d_draw_floor(0,0,0, view_wview[0], view_hview[0], 0, surface_get_texture(sur2), 1, 1);
[/gml]

Listo supongo que con eso bastaría para dar el efecto que dices. Lo pones en un nuevo objeto con una depth muy baja y ya.
Título: Re:Blur en 3D (con surfaces)
Publicado por: AndreiiCx en Junio 01, 2013, 05:21:00 AM
ok cuando tenga tiempo lo probaré :P, me podrías explicar por que es necesario usar las views? tengo entendido que en 3d las views no son relevantes o si?