CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [OpenGL] Crée une sorte de brouillard / fumée

DébutPage précedente
1
Page suivantePage suivante
VivaFidel VivaFidel
MP
Niveau 10
05 mars 2015 à 13:05:03

Yop, alors en ce moment je travail sur un programme qui puissent rendre une galaxie en 3d, le problème c'est que pour le moment les bras de la galaxie sont fait de GL_POINTS et à moins d'en mettre une quantité astronomique (sans jeu de mot) je vois pas comment bien rendre l'espèce de brouillard qui y demeure.

Je me cherche pas à influencer la physique ou quoi de la fumée mais seulement le meilleur moyen de la rendre.

Merci d'avance

Pseudo supprimé
Niveau 10
05 mars 2015 à 13:45:26

Tu devrais te pencher du coté des systèmes de particules et regarder comment les gens font pour avoir un rendu qui ressemble a de la fumé:
J'ai trouvé ca vite fait (je sais pas ce que ca vaut) :
http://prideout.net/blog/?p=63 (part 1)
http://prideout.net/blog/?p=67 (part 2)
Le mec donne le code de son fragment shader :

uniform vec4 Color;
uniform vec2 InverseSize;
varying float gAlpha;
varying vec2 gTexCoord;
uniform sampler2D SpriteSampler;
uniform sampler2D DepthSampler;

void main()
{
    vec2 tc = gl_FragCoord.xy * InverseSize;
    float depth = texture2D(DepthSampler, tc).r;
    if (depth < gl_FragCoord.z)
        discard;

    float d = depth - gl_FragCoord.z;
    float softness = 1.0 - min(1.0, 40.0 * d);
    softness *= softness;
    softness = 1.0 - softness * softness;

    float A = gAlpha * texture2D(SpriteSampler, gTexCoord).a;
    gl_FragColor = Color * vec4(1, 1, 1, A * softness);
}

EDIT: T'as le code complet + les sprites en bas de la page

Message édité le 05 mars 2015 à 13:49:46 par
VivaFidel VivaFidel
MP
Niveau 10
05 mars 2015 à 14:03:02

Le 05 mars 2015 à 13:45:26 bithive a écrit :
Tu devrais te pencher du coté des systèmes de particules et regarder comment les gens font pour avoir un rendu qui ressemble a de la fumé:
J'ai trouvé ca vite fait (je sais pas ce que ca vaut) :
http://prideout.net/blog/?p=63 (part 1)
http://prideout.net/blog/?p=67 (part 2)
Le mec donne le code de son fragment shader :

uniform vec4 Color;
uniform vec2 InverseSize;
varying float gAlpha;
varying vec2 gTexCoord;
uniform sampler2D SpriteSampler;
uniform sampler2D DepthSampler;

void main()
{
    vec2 tc = gl_FragCoord.xy * InverseSize;
    float depth = texture2D(DepthSampler, tc).r;
    if (depth < gl_FragCoord.z)
        discard;

    float d = depth - gl_FragCoord.z;
    float softness = 1.0 - min(1.0, 40.0 * d);
    softness *= softness;
    softness = 1.0 - softness * softness;

    float A = gAlpha * texture2D(SpriteSampler, gTexCoord).a;
    gl_FragColor = Color * vec4(1, 1, 1, A * softness);
}

EDIT: T'as le code complet + les sprites en bas de la page

Merci, je vais essayer ça !

Bugar Bugar
MP
Niveau 29
05 mars 2015 à 14:13:29

Billboard ou système de particules :ok:

VivaFidel VivaFidel
MP
Niveau 10
05 mars 2015 à 15:22:22

Tu devrais te pencher du coté des systèmes de particules et regarder comment les gens font pour avoir un rendu qui ressemble a de la fumé:
J'ai trouvé ca vite fait (je sais pas ce que ca vaut) :
http://prideout.net/blog/?p=63 (part 1)
http://prideout.net/blog/?p=67 (part 2)

Par contre je dois avouer que je comprend pas tout :(

Le 05 mars 2015 à 14:13:29 bugar a écrit :
Billboard ou système de particules :ok:

J'ai déjà checké de ce coté la, mais ce que je me demande c'est comment faire ces particules justement, parce que des points ne suffisent pas.

Bugar Bugar
MP
Niveau 29
05 mars 2015 à 16:32:20

bha les particules, généralement, c'est un ensemble de carré texturé, avec une source d'émission tournée vers la camera qui subissent des transformations (rotation, translation) .

Donc 4 points avec une texture = 1 particule/billboard ( c'est le même principe).

Tu utilise le pipeline dynamique ( gerer par toi via shader ) ou pipeline static (gestion par opengl) d'openGL?

VivaFidel VivaFidel
MP
Niveau 10
05 mars 2015 à 16:40:04

Le 05 mars 2015 à 16:32:20 bugar a écrit :
bha les particules, généralement, c'est un ensemble de carré texturé, avec une source d'émission tournée vers la camera qui subissent des transformations (rotation, translation) .

Donc 4 points avec une texture = 1 particule/billboard ( c'est le même principe).

Tu utilise le pipeline dynamique ( gerer par toi via shader ) ou pipeline static (gestion par opengl) d'openGL?

Dynamique, mais le problème du billboard c'est qu'il est gênant quand on se déplace, on vois trop la rotation des particules, je pensais plutôt à un système de particules

Bugar Bugar
MP
Niveau 29
07 mars 2015 à 12:30:44

Mais les particules sont des billboard avec des propriété en plus ( durée de vie, nombre, orientation, mouvement, vitesse, atténuation vitesse,...)

Si tu vois la rotation c'est qu'elle est pas au point

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment