Bonjour, j'ai un petit problème actuellement.
C'est le même que celui là :
http://irrlichtnetcp.sourceforge.net/ph … er+texture
Problème qui n'a pas été résolu.
J'ai un custom SceneNode qui est un nouveau moteur de terrain, et j'aimerai lui adjoindre une lightmap, puis après faire du texture splatting (ce qui justifie l'utilisation des shaders).
J'ai donc assigné les textures comme suit :
terrain.SetMaterialTexture(0, GraphMgr.Driver.GetTexture("Medias/texture.bmp")); terrain.SetMaterialTexture(1,GraphMgr.Driver.GetTexture("Medias/light.bmp"));
Tout va bien, les deux sont chargées, et si j'utilise MaterialType.Lightmap, tout marche comme il faut.
Seulement voilà, dans mon shader, les textures sont les mêmes :
uniform sampler2D Texture1; uniform sampler2D Texture2; void main(void) { vec4 Color = texture2D(Texture1, vec2(gl_TexCoord[0])); vec4 LM = texture2D(Texture2, vec2(gl_TexCoord[0])); gl_FragColor = vec4(1.0,0.0,0.0,1.0) * LM; }
Et dans ma callback :
// Textures int tex1 = 0; GPU.SetPixelShaderConstant("Texture1", (float)tex1); int tex2 = 1; GPU.SetPixelShaderConstant("Texture2", (float)tex2); int tex3 = 2; GPU.SetPixelShaderConstant("Texture3", (float)tex3); int tex4 = 3; GPU.SetPixelShaderConstant("Texture4", (float)tex4);
Le shader est bien utilisé, puisque le modèle devient rouge, mais LM contient la même texture que Color, à savoir Texture1...
Y'a t-il une solution ?
Merci d'avance.
Hors ligne
salut;
En EMT_SOLID les textures sont elles identiques ?
Sinon a refaire un system de terrain avec un shader pourquoi ne pas faire la lightmap par shader du coup tu te mets en matrial solid ( le standard ) et il n'y aura plus probleme .
Edit :
ton shader a l'air de refaire justement le lightmap donc tu n'as plus besoin du material lightmap de irrlicht ce' n'est plus utile .
Dernière modification par firnafin (10-07-2007 22:14:05)
Hors ligne
Lorsque j'utilise MaterialType.Solid, seule la première texture est utilisée, donc tout va bien.
De plus lorsque j'utilise MaterialType.Lightmap, ça fonctionne correctement, la seconde texture est prise en compte.
Le problème survient lorsque j'essaye d'utiliser la seconde texture (ou même les autres) dans le fragment shader : je me retrouve toujours avec la première.
Dans le cas de mon shader, j'ai obligatoirement besoin de gérer plusieurs textures (pour le texture splatting), donc dans tous les cas le problème reste entier.
Et un material ne peut pas à la fois être Solid et utiliser en shader, c'est l'un ou l'autre puisque les shaders sont considérés comme des MaterialType.
Hors ligne
pourquoi alors tu parle de materialtype.lightmap ?
Bon sinon voila un astuce simple tu mets plusieur texture dans une seul :
| -----------------|------------------|
| | |
| | |
| | |
| | |
| | |
|------------------|------------------|
et apres ds le shader tu choisis sur laquelle tu travailles en faisant une simple translation de la 2 composante des coords
Hors ligne
Je précisais juste qu'en utilisant MaterialType.Lightmap, l'effet fonctionne correctement, la seconde texture est bien prise en compte.
Le problème c'est que ma seconde texture est remplacée par la première dans mon shader.
Et non, je ne peux pas faire tout mon terrain splatting avec 1 seule texture, c'est pas jouable : la texture finale serait immense et peu facilement maintenable.
Hors ligne
il a un truc que je ne capte pas du tout , quand tu fais ton nouveau material avec
gpu->addHighLevelShaderMaterialFromFiles tu y definis le material de "base" , tu peux choisir EMT_LIGHTMAP auquel cas le material a 2 couches de texture .
Hors ligne
Dans le cas de EMT_SOLID aussi.
Tu as, quoi qu'il arrive, 8 textures, et tu peux normalement les utiliser à loisir dans ton fragment shader.
Je viens de tester avec MaterialType.Lightmap comme material de base, et ça ne change rien.
Je ne sais pas si c'est un bug d'Irrlicht.NET CP, ou des dernières versions d'Irrlicht ou encore si il faut que je fasse quelque chose de spécial lors du rendu de mon SceneNode pour qu'il envoi au shader les autres textures...
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 20 invités en ligne Aucun membre connecté RSS Feed |