AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Cherche moteur lumière et ombre avec cycle jour / nuit

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Fostraceur
Pas mal


Messages : 33

MessageSujet: Cherche moteur lumière et ombre avec cycle jour / nuit   Dim 18 Déc 2016 - 21:30

Bonjour ,je cherche actuellement un moteur graphique de lumière et ombre avec cycle jour / nuit qui soit le plus léger possible ,quitte a ce que ce soit pas très beau ,le but c'est d'avoir le jour et la nuit ,une lampe torche et quelque lumière avec choix de couleur et si possible ombre dynamique ,et qui marche surtout avec game maker STUDIO .

J'ai déja pas mal chercher ,j'ai trouver quelques petits tuto et des moteurs tout fait ,j'en ai même acheter un a 4 euros ,et au final soit ça marche pas ,soit c'est trop lourd ,soit excessivement moche ^^

Donc je m'en remet a vous ,et je signale par la même occasion que je serait prêt a rémunéré la personne qui serait capable de me faire un moteur a la hauteur de mes désirs (je demande rien non plus de ouf vu que je voudrais que ce soit léger et du coup j'accepte que ce soit franchement pas très très beau)

Merci ,bonne soirée !
Revenir en haut Aller en bas
importer
Débutant


Messages : 10

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Dim 18 Déc 2016 - 21:40

Bonjour,

Absolument aucunes idées.
A tu essayé ceci :
http://cbna.forumactif.com/t10023-cbna-smartlight-moteur-de-lumiere ?
Revenir en haut Aller en bas
En ligne
Fostraceur
Pas mal


Messages : 33

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Lun 19 Déc 2016 - 12:01

Salut , bien sur que j'ai essayé ,c'est le moteur de bases que j'ai dans mon jeu ,et ça marche très bien ,mais c'est aussi trop lourd pour les petites config (et ont peut me dire tu l'as mal régler ,j'ai tout essayé à mon niveau ,et le moteur de bases seul sans aucunes mécanique de jeu ou sprite fais ramer les petits config c'est tout ) Donc c'est super beau mais mon jeu n'est pas du tout énorme et qu'il faille minimum un pc récent a 600 euros pour l'assumé c'est un peu ****** ,imagine un minecraft / binding of isaac / hotline miami ,ou il faudrait une tour plutôt récente pour pouvoir y joué ,je penses que le succès de ses jeux n'aurait pas était le même.

Mais merci de ta réponses.
Revenir en haut Aller en bas
Mobi
Utilisateur confirmé: Rang ****
avatar

Messages : 1256
Localisation : Dijon

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Lun 19 Déc 2016 - 18:20

Ba pour minecraft... faut bien une config à 700€ pour le faire tourner.
Sinon c’est quoi que tu appels un petite config ? pentium IV ? carte graphique 256mo ?

_________________
Revenir en haut Aller en bas
importer
Débutant


Messages : 10

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Lun 19 Déc 2016 - 19:24

Alternative 1:
En fonction de la config, tu désactive des fonctionnalité du CBNA smart light engine. Les ombres portées et les ombres ambiantes pour commencer.


Alternative 2:
Si tu ne trouves rien, tu peux essayer de faire ton propre moteur.

Pour faire très simple:
* Alternance jour/nuit :  Ajouter un filtre d'une certaine couleur par dessus (rouge claire pour le matin et le soir,  blanc pour la journée, jaune sombre pour la nuit)
* Lumière : Chaque émetteur affiche dans une surface un cercle coloré (blanc au centre, noir aux bords) puis tu affiche la surface avec du blend_mode.
* Ombre : Pas d'ombre.
Revenir en haut Aller en bas
En ligne
Fostraceur
Pas mal


Messages : 33

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Lun 19 Déc 2016 - 21:28

Sur un msi portable avec 1 go de mémoire vidéo et le processeur je me rappel plus mais c'est quand même pas de la ***** ,16 g de ram ,ssd ,bah ça tourne a 2 fps ,et même avec le projet de bases du cbna smartlight ,et pareil avec plusieurs ordi low config ,et j'ai tout essayer ,enlever les ombres ,ralentir la fréquence de rafraîchissement ,j'ai regarder assiduement chaque ligne du moteur (ce fut long..) et changer tout ce que je pouvais au minimum ,je passe de 2 fps a 10 ,et sur ces mêmes pc ,gta 5 ,bf4 ,passe en low / middle (oui c'est qu'un exemple pas besoin de faire des comparatif entre les jeux et tout ,mais pour dire que si un mec peut jouer a ces jeux la ,et pas a mon jeux qui n'est qu'un simple top down shooter 2D ,ça fou la honte quoi ^^' )

Faire mon propre moteur ,je m'en sent que très peu capable ,je pourrais ,sur des mois de taf ,mais j'ai déjà tellement de choses a gérer avec le jeu déjà de base ,je suis seul dev sur le projet ,et puis sur game maker les shaders j'y comprends rien ,et la plupart des surface que j'ai essayer de faire n'ont vraiment rien donné d’efficace .

Donc bon je vais espérer trouver quelque choses dans les limbes du net et si je trouve vraiment rien je ferais un truc très moche ^^
Revenir en haut Aller en bas
Mobi
Utilisateur confirmé: Rang ****
avatar

Messages : 1256
Localisation : Dijon

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Lun 19 Déc 2016 - 22:13

peut-être que ton jeu se lance sur le chipset

_________________
Revenir en haut Aller en bas
Fostraceur
Pas mal


Messages : 33

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Mer 21 Déc 2016 - 14:00

Bon j'ai trouver une petite bases ,je l'ai modifié ,et après pas mal de temps ça commence a ressembler a quelque choses ,mais j'ai un problème avec les surfaces ,Vu que je change de room assez souvent ,j'ai l'impression que ma surface kiff pas ça du tout et au bout de quelque pièces comme ça en plein milieu de la pièce ,je me retrouve avec un " out of memory " sur mon pc  (16 go de ram) ,donc un pc avec peu de ram j'imagine .

J'ai essayé de "surface_free" ma surface entre les rooms et la reconstruire après le room start ,c'est encore pire ,je crash au bout de 2 ou 3 room alors que si je la garde je peut passé 10 room.

EDIT : en fait quand je faisais surface_free derrière je recréer une surface de la taille de la room au lieu de ma view ,c'est corriger et maintenant je crash au bout de 20 room ,donc y a bien un truc que je ne comprends pas.

voila mon code :

CREATE D' OBJ_CONTROL2

Code:


// MUST HAVE: Create a surface for drawing all the lights
sur = surface_create(view_wview, view_hview);

m = instance_create(0, 0, obj_lightlow);
with (m) {
  light_change_scale(3, 3);
  // Update the light, so it's surface is drawn correctly
  light_update();
}

red = 235 //A SAVE
green = 235 //A SAVE
blue = 235 //A SAVE

DANS LE STEP

Code:

// MUST HAVE: Draw all the lights to the surface
surface_set_target(sur);

//NUIT TOMBE
if global.sl_time > 18  {
if red > 1 {
red -= 0.05
green -= 0.05
}else{

}
if blue > 1 {
blue -= 0.05
}
}
//REMONTER DU JOUR
if global.sl_time < 12{
if red < 235 {
red += 0.05
green += 0.05
}else{

}
if blue < 235 {
blue += 0.05
}
}
  colorfond = make_color_rgb(red, green, blue);
  

if global.interieur = 1 {
draw_clear(c_black);//couleur du fond

}else{
draw_clear(colorfond);//couleur du fond
}



if surface_exists(sur){
draw_set_blend_mode(bm_add);
with (obj_lightlow) {
if torch = 1 {
  draw_surface_ext(sur, x - view_xview - sprite_width / 2, y - view_yview - sprite_height / 2, 1, 1, 0, image_blend, 1);
 }else{
   draw_surface_ext(sur, x - view_xview - sprite_width / 2, y - view_yview - sprite_height / 2, 1, 1, 0, image_blend, 1);
}}
draw_set_blend_mode(bm_normal);




surface_reset_target();

}


LE DRAW

Code:
// MUST HAVE: Draw the surface to the screen
if surface_exists(sur){
draw_set_blend_mode_ext(bm_dest_color, bm_zero);
//draw_surface_ext(sur, 0, 0, 1, 1, 0, c_white, 1);// 0 0
draw_surface(sur,view_xview,view_yview)
draw_set_blend_mode(bm_normal);

// Draw info
draw_set_color(c_white);



draw_set_font(fnt_cool);
    draw_set_color(c_white);
    draw_set_halign(fa_center);
    draw_set_alpha(1);
     yy=20
    draw_text(view_xview[view_current]+1250,view_yview[view_current]+yy,string(global.sl_time-frac(global.sl_time))+"h "+string(floor(60*frac(global.sl_time))));
    draw_set_alpha(1);
    draw_set_color(c_black);




draw_text(0, 0, string(fps) + "fps#" + string(instance_number(obj_lightlow)) + " lights#" + string(instance_number(obj_wall)) + " casters");
draw_set_color(c_black);


//draw_background(neige7, 0, 0);



}


SCRIPT : LIGHT_UPDATE


Code:
var xp, yp, lw, lh, imin, imax, i, pdmin, pdmax, minx, miny, maxx, maxy, a_min, a_max, a_test;

lw = sprite_width;
lh = sprite_height;

surface_set_target(sur);
draw_clear(c_black);
draw_sprite_ext(sprite_index, image_index, lw / 2, lh / 2, image_xscale, image_yscale, image_angle, c_white, 1);  

with (obj_wall) {
  minx = px[0];
  miny = py[0];
  maxx = px[0];
  maxy = py[0];
  
  imin = -1;
  imax = -1;
  a_test = point_direction(other.x, other.y, x, y);
  a_min = -1;
  a_max = -1;
  
  for (i = 0; i < points; i++) {
    if (px[i] < minx)
      minx = px[i];
    if (px[i] > maxx)
      maxx = px[i];
    if (py[i] < miny)
      miny = py[i];
    if (py[i] > maxy)
      maxy = py[i];
      
    pdmin = (point_direction(other.x, other.y, x + px[i], y + py[i]) - a_test + 360) mod 360;
    pdmax = (a_test - point_direction(other.x, other.y, x + px[i], y + py[i]) + 360) mod 360;
    if (pdmin > a_min && pdmin <= 180) {
      a_min = pdmin;
      imin = i;
    }
    if (pdmax > a_max && pdmax <= 180) {
      a_max = pdmax;
      imax = i;
    }
  }
  
  if (rectangle_in_rectangle(x + minx, y + miny, x + maxx, y + maxy, other.x - lw / 2, other.y - lh / 2, other.x + lw / 2, other.y + lw / 2)) {  
    i = imin;
    draw_primitive_begin(pr_trianglestrip);
    do {
      pd = point_direction(other.x, other.y, x + px[i], y + py[i]);
      draw_vertex_color(x + px[i] - other.x + other.sprite_width / 2, y + py[i] - other.y + other.sprite_height / 2, c_black, 1);
      draw_vertex_color(x + px[i] + lengthdir_x(height, pd) - other.x + other.sprite_width / 2, y + py[i] + lengthdir_y(height, pd) - other.y + other.sprite_height / 2, c_black, 1 - fade);
      i += 1;
      i = i mod points;
    } until (i == (imax + 1) mod points)
    draw_primitive_end();
  }
}

surface_reset_target();


Donc voila si quelqu'un a la solution miracle pour pas me manger un " out of memory " toutes les deux secondes avec la surface ,merci !
Revenir en haut Aller en bas
Fostraceur
Pas mal


Messages : 33

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Ven 23 Déc 2016 - 11:58

Bon je met la réponses aux cas ou ça intéresserais quelqu'un ,en fait je penses qu'il me manquais le draw_clear_alpha en fin de room :


ROOM END :
Code:
if surface_exists(sur) {

    surface_set_target( sur );
        draw_clear_alpha( c_white, 0);
    surface_reset_target();
    surface_free(sur);

}

Je poserais bien une question mais franchement ce forum est un peu mort non ?
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8885
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Lun 2 Jan 2017 - 10:16

Un peu mais si quelqu'un a une réponse il va répondre :p
Rien ne coûte d'essayer.

_________________
                 
Revenir en haut Aller en bas
Fostraceur
Pas mal


Messages : 33

MessageSujet: re   Dim 5 Fév 2017 - 13:34

Et bien du coup je pose ma question ^^ ,pour mon nouveau moteur je cherche a faire un flou gaussien (ou autre blur) très léger sur la totalité de l'écran pour lisser un peu l'image comme sur le moteur de blitz ,j'ai essayer avec des shader ,genre ça :

https://forum.yoyogames.com/index.php?threads/full-screen-blur-shader.2739/
http://xorshaders.weebly.com/tutorials/blur-shaders-5-part-2

ou d'autres ,mais j'ai l'impression a chaque fois que ça agis juste sur un sprite ou un background (et encore ,vu que dans mon jeux quand je met ces scripts ,il ne ce passe RIEN) et je vous avoue que je comprends RIEN aux shaders ,j'arrive a rien avec , donc si vous pouviez bien me guider sur comment rendre sur la totalité de mon jeu un jolie blur agréable ,ce serait super ,(je crois que j'arrive même pas appelé les shaders dans un objet et j'ai essayé de suivre des tuto ,mais je suis un peu une quiche en anglais donc ,plz help ^^)
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8885
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Dim 5 Fév 2017 - 14:24

Il faut que tu rendes tout ton jeu dans une surface, puis que tu rendes la surface en appliquant un shader de flou gaussien dessus.

Si tu utilises un shader de flou gaussien sans faire cela, il va s'appliquer sur chaque rendu different et ça va être très lourd + probablement faire n'importe quoi (visuellement parlant).

_________________
                 
Revenir en haut Aller en bas
Fostraceur
Pas mal


Messages : 33

MessageSujet: re   Dim 5 Fév 2017 - 14:37

le problème c'est que mon jeu aime vraiment pas les surfaces ,il me fais des out of memory si j'essaye d'en mettre plusieurs en même temps ,et du coup t'as pas juste un petit script de bases pour lancer le shader sur la surface dans l'objet ,aux moins pour me guider un peu sur la marche a suivre.

OU ,est ce que je peut mettre un shader dans la surface de mon moteur graphique qui gère juste un cycle jour / nuit et des lumières ? ou faut obligatoirement créer une nouvelles surface ?
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8885
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Dim 5 Fév 2017 - 18:06

Un pixel/fragment shader ça s'applique sur la prochaine texture affichée.
Donc si tu appliques ton shader avant de dessiner un sprite, ça va s'appliquer sur ce sprite la, et tout ce qui sera affiché ensuite tant que tu désactives pas le shader.

Le truc c'est comme je le disais juste avant, c'est bien plus opti de faire tous les rendus en offscreen avant d'appliquer le shader, car sinon tu vas te retrouver déjà avec un shader qui traite beaucoup beaucoup plus de pixels (genre des zones cachées par des sprites), et surtout ça va faire un truc un peu moche a certains endroits (genre les contours de tes sprites il va faire le calcul avec la transparence qu'y a autour, et ça risque de rendre dégueux).

Dans tous les cas il te faudra un rendu offscreen (sur une surface).
Si tes surfaces posent soucis, le problème est du côté driver, ou code, car peu probable côté hardware (les surfaces fonctionnaient déjà sur quasi tous les GPU y a 15 ans...).
Si tu es chez nvidia tentes d'aller dans le panneau de configuration nvidia et de forcer l'utilisation du gpu plutôt que du chipset intégré (si t'es sur laptop).

Si le soucis viens du code, commences par faire tes tests sur un nouveau projet, ou tu affiches quelques sprite, un background, tu fais un rendu offscreen, t'appliques ton shader, et tu regardes ce que ça donne.

_________________
                 
Revenir en haut Aller en bas
Fostraceur
Pas mal


Messages : 33

MessageSujet: Re   Dim 5 Fév 2017 - 18:17

yo ,j'ai fais ça dans le draw de mon moteur graphique :

Code:


//ça c'est pour le moteur graphique de bases (lumières ,nuit ,ect)
draw_set_blend_mode_ext(bm_dest_color, bm_zero);
draw_surface_ext(sur, view_xview, view_yview, 1, 1, 0, c_white, 1);// 0 0
draw_set_blend_mode(bm_normal);


//ça c'est pour mettre mon blur sur la surface du moteur
draw_set_blend_mode_ext(bm_dest_color, bm_zero);
shader_set(shader);
draw_surface_ext(sur, view_xview, view_yview, 1, 1, 0, c_white, 1);
shader_reset();
draw_set_blend_mode(bm_normal);

et le shader
Code:


uniform vec3 size;//width,height,radius

const int Quality = 16;//8
const int Directions = 16;
const float Pi = 6.28318530718;//pi * 2

void main()
{
    vec2 radius = size.z/size.xy;
    vec4 Color = texture2D( gm_BaseTexture, v_vTexcoord);
    for( float d=0.0;d<Pi;d+=Pi/float(Directions) )
    {
        for( float i=1.0/float(Quality);i<=1.0;i+=1.0/float(Quality) )
        {
                Color += texture2D( gm_BaseTexture, v_vTexcoord+vec2(cos(d),sin(d))*radius*i);
        }
    }
    Color /= float(Quality)*float(Directions)+1.0;
    gl_FragColor =  Color *  v_vColour;
}


Mais rien ne ce passe ,visuellement j'ai pas de changement Sad je continue a chercher ,mais sans connaitre les fonctions et leur utilité (et étant une quiche en anglais) c'est pas évident.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8885
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Dim 5 Fév 2017 - 18:28

Commences par essayer de faire marcher ton shader sur une texture de base dans un nouveau projet au lieu de faire de l'alchimie :p

D'ailleurs, un bon shader de blur (opti) est un shader en deux passes...

_________________
                 
Revenir en haut Aller en bas
Fostraceur
Pas mal


Messages : 33

MessageSujet: Re   Dim 5 Fév 2017 - 20:07

Plus de détails pliiiiz
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8885
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   Dim 5 Fév 2017 - 20:50

1. Apprends a utiliser un shader
2. Fais un projet d'exemple ou tu appliques ton shader de flou gaussien
3. Ajoute le rendu offscreen avec une surface

Bref, fais les étapes dans le bon ordre (et la première étape c'est se documenter sur l'outil que tu n'as pas l'air de bien comprendre :p)

_________________
                 
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Cherche moteur lumière et ombre avec cycle jour / nuit   

Revenir en haut Aller en bas
 
Cherche moteur lumière et ombre avec cycle jour / nuit
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Effet ombre sous l'écriture
» Jour et nuit
» Renouvellement nom de domaine avec un jour de retard, puis plus d'accès au forum!
» ombre avec Sketch and toon.
» CBNA SmartLight - Moteur de lumière

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: