Effetto acqua

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Effetto acqua

Messaggio da doom13 »

Ragazzi mi sapreste consigliare un buon shader o qualunque cosa per fare l'effetto acqua? In particolare devo fare dei livelli sott'acqua e il gioco è top-down. Che ci crediate o no è tutto il pomeriggio che cerco ma ho trovato solo versioni per gm7.

Altrimenti c'è questa versione, addirittura per gm6, che per quanto sia vecchia è perfetta per quello che devo fare:
http://www.mediafire.com/download/jndde ... rwater.gm6
Il problema è che usa "screen_redraw" ormai obsoleto in GMS, ho provato a cambiarlo con "draw_surface(application_surface, 0, 0);" ma accade il panico.
Come potrei modificarlo? :D

Edit:
Vi posto anche il file GMZ:
http://www.mediafire.com/download/xhzxo ... terGMZ.gmz
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Effetto acqua

Messaggio da guidox »

Vedi se ti può aiutare l'effetto "wave" che trovi qui: http://gmc.yoyogames.com/index.php?showtopic=586380
Immagine

Immagine

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Effetto acqua

Messaggio da doom13 »

guidox ha scritto:Vedi se ti può aiutare l'effetto "wave" che trovi qui: http://gmc.yoyogames.com/index.php?showtopic=586380
Lo avevo già provato ma non mi aveva soddisfatto.
L'ho riscaricato stamattina e smanettando con le impostazioni sono riuscito a trovare qualcosa che mi gusta.
Grazie comunque. :sisisi:
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

Re: Effetto acqua

Messaggio da Vallo92 »

In questo video presentano uno shader molto ben fatto: https://www.youtube.com/watch?v=nxOE21BtpBI
Non so però se è possibile reperire da qualche parte il codice.
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Effetto acqua

Messaggio da doom13 »

Vallo92 ha scritto:In questo video presentano uno shader molto ben fatto: https://www.youtube.com/watch?v=nxOE21BtpBI
Non so però se è possibile reperire da qualche parte il codice.
Non lo trovo..

Risolto:
Spoiler
Per quanto riguarda invece lo shader "wave" ho un problema.
Nel gioco ho una view e lo shader viene applicato su tutta la view, il problema è che il risultato (lo shader applicato) non viene disegnato a schermo intero.

Nel create c'è questo code:

Codice: Seleziona tutto

draw_set_color(c_white);

uni_time = shader_get_uniform(shd_wave,"time");
var_time_var = 0;

uni_mouse_pos = shader_get_uniform(shd_wave,"mouse_pos");
var_mouse_pos_x = mouse_x - view_xview;
var_mouse_pos_y = mouse_y - view_yview;

uni_resolution = shader_get_uniform(shd_wave,"resolution");
var_resolution_x = 1280;//display_get_gui_width(); //view_wview;
var_resolution_y = 800;//display_get_gui_height(); //view_hview;

uni_wave_amount = shader_get_uniform(shd_wave,"wave_amount");
var_wave_amount = 13;//higher = more waves

uni_wave_distortion = shader_get_uniform(shd_wave,"wave_distortion");
var_wave_distortion = 100;//higher = less distortion

uni_wave_speed = shader_get_uniform(shd_wave,"wave_speed");
var_wave_speed = 2.0;//higher = faster

shader_enabled = true;
full_screen_effect = true;
Ho provato prima con display_get_gui_width(); e display_get_gui_width(); poi mettendo direttamente la risoluzione del mio schermo.

Shader Vertex:

Codice: Seleziona tutto

attribute vec3 in_Position;
attribute vec2 in_TextureCoord;

varying vec2 v_texcoord;

void main()
{
    gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * vec4(in_Position, 1.0);
    v_texcoord = in_TextureCoord;
}
Shader Fragment:

Codice: Seleziona tutto

varying vec2 v_texcoord;

uniform float time;
uniform vec2 mouse_pos;
uniform vec2 resolution;
uniform float wave_amount;
uniform float wave_distortion;
uniform float wave_speed;

void main()
{ 
    vec2 uv = v_texcoord;
    uv.x = uv.x+cos(uv.y*wave_amount+time*wave_speed)/wave_distortion;
    uv.y = uv.y+sin(uv.x*wave_amount+time*wave_speed)/wave_distortion;
 
    gl_FragColor = texture2D(gm_BaseTexture,uv);
}
Vi ho messo anche lo shader ma credo facciate prima a scaricare il file di esempio:
https://dl.dropboxusercontent.com/s/f98 ... 7/Wave.gmz
Ho modificato il draw, sostituendo draw_surface con draw_surface_stretched()
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 41 ospiti