Shader - vyjímka

Pokud si nevíte s něčím rady ohledně tvorby v Game Makeru - pište sem!
Odpovědět [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
BboyScary
Příspěvky: 244
Registrován: listopad 2, 2011, 6:33 pm
Facebook: https://www.facebook.com/BB-Scary-produkce-1161668
Bydliště: Kopřivnice
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Shader - vyjímka

Příspěvek od BboyScary » červenec 26, 2017, 6:21 pm

Zdravím. Zase já :D Máte někdo zkušenosti se shaderama? Já jsem do své hry jeden použil od Dodozen. Používám ho pro pause menu. Když ho aktivuju, tak se celá obrazovka rozmaže a přidá se nápis pause a main menu. To jsou dva další objekty, které se objeví až po tom objektu, který se stará o rozmazání obrazovky. Dá se udělat, aby ty dva jediné zůstaly ostré?
mám skript draw_SHADER_blur

Kód: Vybrat vše

var enabled = argument0;

//ANIMATION
/*
    ideally this should be moved out the draw event
    for better control...
*/
var timeMult = 0; //make the animation slower or faster...
var time = 5;
var oscillatorValue = sin(time);
var oscillatorValueAbs = abs(sin(time));

//SHADER SETUP
vRatio = 1;

    // Samplers / Textures ---------------------------------------------------------------------
    
    // Shader setup ----------------------------------------------------------------------------
    var shader      = shader_blur;
    var u_vRatio    = shader_get_uniform(shader, "u_vRatio");
    var u_threshold = shader_get_uniform(shader, "u_threshold");
    
    var radius = 0.005;
    
    shader_set(shader);
        shader_set_uniform_f(u_vRatio, vRatio);
        shader_set_uniform_f(u_threshold, radius * oscillatorValue);
        draw_surface(application_surface,0,0);
    shader_reset();
a shader shader_blur

Kód: Vybrat vše

attribute vec3 in_Position;
attribute vec2 in_TextureCoord;

uniform float u_vRatio;

varying vec2 v_uv0;
varying vec2 v_uv0Ratio;

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;
      
    v_uv0       = in_TextureCoord;    
    v_uv0Ratio  = in_TextureCoord * vec2(1.0, u_vRatio); 
}
je tam udělaná animace v tom skriptu, že ten efekt se rozostřuje a zaostřuje. Tam jsem to zatím nepokrátil, ale za proměnou timeMult jsem dosadil 0 a za proměnnou time jsem dosadil 5 takže se ten effekt nemění a rovnou skočí na intenzitu, která odpovídá intenzitě po 5ti sekundách.

potom mám objekt obj_blur
create event:

Kód: Vybrat vše

global.isShaderEnabled = true;
draw GUI

Kód: Vybrat vše

draw_SHADER_blur(global.isShaderEnabled);
když zmáčknu esc tak se obj_blur vytvoří a postará se o efekt a když zmáčknu znovu tak se zase smaže.

Goblin
Příspěvky: 136
Registrován: červenec 2, 2014, 2:42 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: Shader - vyjímka

Příspěvek od Goblin » červenec 27, 2017, 9:35 pm

Já se shaderama teprve začínám, ale správně se myslím používají tak, že ho při vykreslování zapneš a když vykreslíš, co potřebuješ, zase ho vypneš pomocí shader_reset(). Tak se shaderem vykreslí jen ten jeden objekt a ostatní se vykreslí normálně...

Pokud chceš nějaké objekty z univerzálně zapnutého shaderu naopak vynechat, zresetuj shader na začátku jejich draw eventů a na konci ho zase nastav.
"Understanding is not required. Only obedience."

BboyScary
Příspěvky: 244
Registrován: listopad 2, 2011, 6:33 pm
Facebook: https://www.facebook.com/BB-Scary-produkce-1161668
Bydliště: Kopřivnice
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: Shader - vyjímka

Příspěvek od BboyScary » červenec 31, 2017, 6:13 pm

takhle to nejde. Jediné co pomáhá je když na tom objektu s nápisem pause dám draw gui ale to se potom vykreslí pokaždé jinde v závislosti na tom kde se nachází kamera.

Goblin
Příspěvky: 136
Registrován: červenec 2, 2014, 2:42 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: Shader - vyjímka

Příspěvek od Goblin » červenec 31, 2017, 9:29 pm

No jo, to je tím, že ho používáš přímo na aplication surface. Nemohl bys mít místo toho 2 surfacy velikosti viewu a vykreslovat na jeden všechno, co chceš mít rozmazané a na ten druhý to ostatní? Jestli chceš mít to nerozmazané v popředí, neměl by to být problém, ne?
"Understanding is not required. Only obedience."

BboyScary
Příspěvky: 244
Registrován: listopad 2, 2011, 6:33 pm
Facebook: https://www.facebook.com/BB-Scary-produkce-1161668
Bydliště: Kopřivnice
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: Shader - vyjímka

Příspěvek od BboyScary » červenec 31, 2017, 11:04 pm

jo to by asi šlo, ale to už je na mě moc složité. Já se surface vůbec neumím a nevím, co bych tam jiného dopsal místo pplication_surface.

Goblin
Příspěvky: 136
Registrován: červenec 2, 2014, 2:42 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: Shader - vyjímka

Příspěvek od Goblin » srpen 1, 2017, 3:14 am

Napadá mě ještě udělat objekty neviditelnými (aby se přeskakoval jejich draw event), zapnout shader, vykreslit ty zamlžené, vypnout shader a vykreslit ty ostré. K ručnímu vykreslení objektů z kontrolního objektu můžeš použít

Kód: Vybrat vše

with object event_perform(ev_draw,0)
v jeho draw eventu.
"Understanding is not required. Only obedience."

Uživatelský avatar
ipq
Příspěvky: 927
Registrován: srpen 15, 2011, 7:31 pm
Bydliště: Petržalka
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: Shader - vyjímka

Příspěvek od ipq » srpen 5, 2017, 12:17 pm

Nebolo by lepšie aplikovať namiesto aplication surface nejaký obdĺžnik či screenshot. Totiž ak je to nastavené na aplication surface, tak to zasiahne celú obrazovku, na ktorej sa to vykresľuje a čo si pamätám, najlepšie je spraviť to tak že najprv vykresliť nejaký obdĺžnik na celú obrazovku a naň aplikovať ten shader a potom ďalej vykresliť text alebo keď sa to robí vo zmysle spraviť screenshot, deaktivovať všetky objekty okrem pause objektu, tak pri vykresľovaní nastaviť, že ten screenshot sa bude rozmazávať.

Odpovědět
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Kdo je online

Uživatelé prohlížející si toto fórum: Bing [Bot] a 2 hosti