Bonjour à tous,
Je suis débutant avec Irrlicht (et avec la 3D d'ailleurs) et j'aurais besoin de créer une bulle d'eau transparente.
Je tente un peu en vain d'essayer de rendre ça avec une simple sphère, une texture d'eau et un matériel EMT_TRANSPARENT mais le rendu est plus que mauvais.
Avez vous une idée de comment je dois m'y prendre pour avoir un rendu sympa ?
Hors ligne
A mon avis si tu veut avoir un rendu sympa il faudra surement utilisé les shaders,
Si tu débute c'est pas le plus facile à utilisé
Si tu veut apprendre à crée des simples shaders tu peut commencer avec ça :
Tuto Shaders
et pour t'en servir avec irrlicht tu peut regarder le tuto 10 dans le sdk de irrlicht
Dernière modification par bestben (08-07-2008 17:14:10)
Hors ligne
J'ai regardé un peu le tutoriel sur les shaders. Programatiquement parlant ça ne m'a pas l'air inaccessible (j'ai de bonnes connaissances en développement classique (non 3D) )
Mais je ne comprend pas a quoi servent les fichiers "psh" et "vsh" et ce qu'ils contiennent ? (j'utilise D3D9)
Hors ligne
Je pense que ce sont les pixel et vertex shader spéciaux de D3D
Edit: Eh bien non je me suis trompé les fichiers psh et vsh sont des shaders 1.0 (à moins que me trompe toujours) pour D3D9 c'est le fichier .hlsl
Dernière modification par bestben (08-07-2008 17:26:16)
Hors ligne
bestben :
Edit: Eh bien non je me suis trompé les fichiers psh et vsh sont des shaders 1.0 (à moins que me trompe toujours) pour D3D9 c'est le fichier .hlsl
Ah ! Et il faut se les créer ces fichiers ? :p
Dernière modification par Chris (08-07-2008 18:57:36)
Hors ligne
Les shaders 1.0 sont les anciennes versions de shaders donc tu n'en à pas besoin à moins de les utiliser sur un ordinateur non-récent
Par contre si tu utilise les shaders avec D3D9 le language de programmation des shaders sera différent de OpenGL
Hors ligne
Je commence a comprendre. Mais j'ai encore besoin d'un peu d'aide. J'ai trouvé un shader D3D9 à cette adresse : http://www.devmaster.net/forums/showthread.php?t=4043
Simplement même avec le tutoriel irrlicht sur les shaders je ne m'en sort pas.
J'aimerai juste appliquer ce shader sur une sphère.
Quelqu'un pour m'expliquer comme faire ?
merci par avance
Hors ligne
Bon, après avoir fouillé un peu sur le forum de Irrlicht. J'ai trouvé le tutoriel sur la réfraction de "blindside" (http://irrlicht.sourceforge.net/phpBB2/ … hp?t=27054)
Ca correspond exactement à ce a quoi je souhaité arriver mais j'ai un autre problème.
Le shader est écrit en GLSL (opengl) et je travaille avec dx9.
Est ce que quelqu'un pourrait faire la conversion glsl --> hlsl pour moi ? Je n'y arriverai pas personnellement et j'en ai terriblement besoin.
Voici le code des vertex et pixel shader qui m'interresse.
Je remercie 1000 fois par avance celui qui pourra me réaliser cette traduction.
uniform sampler2D RTTexture; uniform sampler2D NormalMap; uniform vec4 TintColour; varying vec4 GlassPos; varying vec2 TexCoord; varying float VAlpha; void main() { vec4 projCoord = GlassPos / GlassPos.w; projCoord += vec4(1.0); projCoord *= 0.5; vec2 norTex = TexCoord.xy; vec4 NorMap = texture2D(NormalMap,norTex); vec3 Normal = NorMap.xyz; vec2 TexOff = Normal.xy * 2.0; TexOff -= vec2(1.0,1.0); projCoord.xy += ((TexOff.xy - vec2(0.5,0.5)) / 25.0); projCoord.xy = clamp(projCoord.xy, 0.001, 0.999); vec4 refTex = texture2D(RTTexture,projCoord.xy); gl_FragColor = refTex * TintColour; gl_FragColor.a = NorMap.a * VAlpha; }
uniform mat4 mWorld; uniform vec4 CamPos; uniform float TexMul, AlphaAdjust; varying vec4 GlassPos; varying vec2 TexCoord; varying float VAlpha; void main() { VAlpha = gl_Color.a * AlphaAdjust; TexCoord = gl_MultiTexCoord0.xy; GlassPos = ftransform(); gl_Position = GlassPos; }
Hors ligne
Est ce que quelqu'un pourrait faire la conversion glsl --> hlsl pour moi ? Je n'y arriverai pas personnellement et j'en ai terriblement besoin.
Il ne faut pas exagérer, la syntaxe des deux est très proche (héritée du C), les types sont grosso modo les mêmes, les fonctions aussi...
Y'a un adage qui commence par "aide-toi toi même..." : je suis sur que si tu rencontres des problèmes dans la conversion il y aura des âmes charitables connaissant l'HLSL pour t'aider, mais encore faut-il que tu te donnes la peine d'essayer !
Hors ligne