[4.60] shaders (reflection, normalmap..) & Lightmap
Re: [4.60] shader : reflection (env_map)
kelebrindae, entre la 1.6 et la 1.7 , ogre gère différemment les materials , si les shaders sont écrit en HLSL ou GLSL , ca ne pose aucun problème.
Re: [4.60] shader : reflection (env_map)
et on espère que ce n'est que le débutFred a écrit :Sympa les exemples !

Ce serait d'ailleurs intéressant par la suite de mettre ce genre d'exemples dans le dossier exemples de PB, histoire de montrer ce que l'on peut faire avec pb et ogre

http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
-
- Messages : 579
- Inscription : ven. 11/mai/2007 15:21
Re: [4.60] shader : reflection (env_map)
@Blendman: ou bien, un endroit sur le forum (français ou anglais) pour mettre en "sticky" les shaders développés par les utilisateurs; avoir une petite liste de shaders à dispo pour éviter de les re-développer à chaque fois, ça pourrait être pratique.
@G-Rom: Théoriquement, les deux qui ne marchent plus (refraction et normal maps) sont en HLSL
. Pour le shader "normal map", notamment, je l'avais obtenu en convertissant us shader CG en HLSL avec le CgCompiler de nVidia.
J'ai relevé ça dans ogre.log:=> Ogre 1.7 ne supporte plus les versions de shaders en dessous de 2.0 ?
Pour info, voici toutes les erreurs que je trouve dans le ogre.log:

@G-Rom: Théoriquement, les deux qui ne marchent plus (refraction et normal maps) sont en HLSL

J'ai relevé ça dans ogre.log:
Code : Tout sélectionner
OGRE EXCEPTION(3:RenderingAPIException): Cannot assemble D3D9 high-level shader BumpMapFPSpecular Errors:
error X3539: ps_1_x is no longer supported; use /Gec in fxc to automatically upgrade to ps_2_0
error X3539: Alternately, fxc's /LD option allows use of the old compiler DLL
Pour info, voici toutes les erreurs que je trouve dans le ogre.log:
Code : Tout sélectionner
10:31:26: OGRE EXCEPTION(3:RenderingAPIException): Cannot assemble D3D9 high-level shader AmbientOneTexture Errors:
D:\Programmation\PureBasic\projects\shaders\normalMaps - multilights\memory(33,14): error X3025: global variables are implicitly constant, enable compatibility mode to allow modification
in D3D9HLSLProgram::loadFromSource at OgreD3D9HLSLProgram.cpp (line 223)
10:31:26: High-level program AmbientOneTexture encountered an error during loading and is thus not supported.
OGRE EXCEPTION(3:RenderingAPIException): Cannot assemble D3D9 high-level shader AmbientOneTexture Errors:
D:\Programmation\PureBasic\projects\shaders\normalMaps - multilights\memory(33,14): error X3025: global variables are implicitly constant, enable compatibility mode to allow modification
in D3D9HLSLProgram::loadFromSource at OgreD3D9HLSLProgram.cpp (line 223)
10:31:26: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgramParams.cpp (line 1423)
10:31:26: Compiler error: invalid parameters in cube.material(10): setting of constant failed
10:31:26: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgramParams.cpp (line 1423)
10:31:26: Compiler error: invalid parameters in cube.material(11): setting of constant failed
10:31:26: OGRE EXCEPTION(3:RenderingAPIException): Cannot assemble D3D9 high-level shader BumpMapVPSpecular Errors:
D:\Programmation\PureBasic\projects\shaders\normalMaps - multilights\memory(52,14): error X3025: global variables are implicitly constant, enable compatibility mode to allow modification
in D3D9HLSLProgram::loadFromSource at OgreD3D9HLSLProgram.cpp (line 223)
10:31:26: High-level program BumpMapVPSpecular encountered an error during loading and is thus not supported.
OGRE EXCEPTION(3:RenderingAPIException): Cannot assemble D3D9 high-level shader BumpMapVPSpecular Errors:
D:\Programmation\PureBasic\projects\shaders\normalMaps - multilights\memory(52,14): error X3025: global variables are implicitly constant, enable compatibility mode to allow modification
in D3D9HLSLProgram::loadFromSource at OgreD3D9HLSLProgram.cpp (line 223)
10:31:26: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgramParams.cpp (line 1423)
10:31:26: Compiler error: invalid parameters in cube.material(23): setting of constant failed
10:31:26: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgramParams.cpp (line 1423)
10:31:26: Compiler error: invalid parameters in cube.material(24): setting of constant failed
10:31:26: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgramParams.cpp (line 1423)
10:31:26: Compiler error: invalid parameters in cube.material(25): setting of constant failed
10:31:26: OGRE EXCEPTION(3:RenderingAPIException): Cannot assemble D3D9 high-level shader BumpMapFPSpecular Errors:
error X3539: ps_1_x is no longer supported; use /Gec in fxc to automatically upgrade to ps_2_0
error X3539: Alternately, fxc's /LD option allows use of the old compiler DLL
in D3D9HLSLProgram::loadFromSource at OgreD3D9HLSLProgram.cpp (line 223)
10:31:26: High-level program BumpMapFPSpecular encountered an error during loading and is thus not supported.
OGRE EXCEPTION(3:RenderingAPIException): Cannot assemble D3D9 high-level shader BumpMapFPSpecular Errors:
error X3539: ps_1_x is no longer supported; use /Gec in fxc to automatically upgrade to ps_2_0
error X3539: Alternately, fxc's /LD option allows use of the old compiler DLL
in D3D9HLSLProgram::loadFromSource at OgreD3D9HLSLProgram.cpp (line 223)
10:31:26: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgramParams.cpp (line 1423)
10:31:26: Compiler error: invalid parameters in cube.material(37): setting of constant failed
10:31:26: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgramParams.cpp (line 1423)
10:31:26: Compiler error: invalid parameters in cube.material(38): setting of constant failed
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Re: [4.60] shader : reflection (env_map)
oui, le mieux étant d'avoir les deuxkelebrindae a écrit :@Blendman: ou bien, un endroit sur le forum (français ou anglais) pour mettre en "sticky" les shaders développés par les utilisateurs; avoir une petite liste de shaders à dispo pour éviter de les re-développer à chaque fois, ça pourrait être pratique.![]()


Sinon, voici la suite de mon test de lightmap. Le mapping est pourri (mode automatique), mais c'est vraiment du très vite fait pour mes tests de lightmap


le fichier :
http://blendman.free.fr/dev/pb/3arks/lightmap02.zip
sur ce fichier, je rencontre plusieurs choses étranges :
- SpotLightRange(1,20,90,20) fait planter le fichier et le débugger
- lightpower() ne semble pas fonctionner : comment l'utilise t-on ?
- sous windows, on a toujours le bug des shadows sur la 4.60beta 2 (pas sur ce fichier, mais sur l'autre fichier, avec le puf et les barrières)

Autre question :
- est-il possible de donner une atténuation aux lights omnidirectionnelles ? Par exemple, au bout de 20 unités, elle n'éclairent plus les objets.
voiloutch

http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Re: [4.60] shader : reflection (env_map)
C'est appétissant tout ça 
Quand j'aurais le temps je posterai aussi quelques essais. Je me suis déjà un peu amusé avec le moteur physique, c'est vraiment cooooool! Sinon, mes anciens tests de shaders sont tous à revoir, je vais devoir les repasser à la moulinette CG, ça me saoule un peu pour l'instant. Faut aussi que je vois si j'arrive toujours à convertir mes objets sous lightwave. Au fait, pour le problème d'ombres, ce n'est pas une histoire de complexité de l'objet, ou de double faces? Ca arrive souvent.

Quand j'aurais le temps je posterai aussi quelques essais. Je me suis déjà un peu amusé avec le moteur physique, c'est vraiment cooooool! Sinon, mes anciens tests de shaders sont tous à revoir, je vais devoir les repasser à la moulinette CG, ça me saoule un peu pour l'instant. Faut aussi que je vois si j'arrive toujours à convertir mes objets sous lightwave. Au fait, pour le problème d'ombres, ce n'est pas une histoire de complexité de l'objet, ou de double faces? Ca arrive souvent.
Re: [4.60] shader : reflection (env_map)
- SpotLightRange(1,20,90,20) fait planter le fichier et le débugger
- lightpower() ne semble pas fonctionner : comment l'utilise t-on ?
- sous windows, on a toujours le bug des shadows sur la 4.60beta 2 (pas sur ce fichier, mais sur l'autre fichier, avec le puf et les barrières)
- Il faut que ta lumière soit un spot , il faut maitrisé les vecteurs pour leur donné une direction LumDir = normalise (LumTarget - LumPos) , il manque une fonction d'atténuation , elle est codé , non implémenté.
- LightPower() n'est là que pour le HDR , son utilisation est inutile dans ton cas de figure
- je pense que cela viens de tes meshs , si c'est un bug inhérent à ogre , je ne peut rien faire mis à part un rapport.
Re: [4.60] shader : reflection (env_map)
ok, et ce sera intégré pour la 4.60 ou sans doute après j'imagine ?G-Rom a écrit :- Il faut que ta lumière soit un spot , il faut maitrisé les vecteurs pour leur donné une direction LumDir = normalise (LumTarget - LumPos) , il manque une fonction d'atténuation , elle est codé , non implémenté.

Ah ok. Et peut-on gérer l'intensité d'une lumière ?LightPower() n'est là que pour le HDR , son utilisation est inutile dans ton cas de figure
j'imagine que c'est aussi lié à l'atténuation

ce qui est étrange c'est que visiblement, avec les mêmes meshs, sous linux ça ne fait pas ce bug (car tu ne l'avais pas, mais tous ceux qui ont tester sous windows l'avaient.- je pense que cela viens de tes meshs , si c'est un bug inhérent à ogre , je ne peut rien faire mis à part un rapport.
Cela dit, j'ai testé et je ne vois pas trop non plus ce que je peux faire, car le mesh semble correct, ou alors c'est un bug du à l'export depuis blender, mais là non je ne pourrais rien faire

EDIT : bon, visiblement, c'est plus ou oins connu comme bug on dirait :
"The stencil shadows issue is likely to be that your model has too many 'holes', which can be genuine holes or things like triangles not indexing shared vertices properly, but restating vertices for every triangle independently. Basically holes cause degeneracies in the hull, which causes problems for shadow volumes - we can cope with the odd hole, but if there are lots of them they blow the stencil buffer and cause artefacts. "
Ca pose problème pour certains export lié à blender, on dirait.
Mais ça ne se voit presque pas lorsque l'on utilise entityscale(0,1,1,1) et pas entityscale(0,200,200,200)

Je veux dire quand on utilise un scale très petit ou pas du tout, car scale = 1 ne sert je sais bien

http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
-
- Messages : 579
- Inscription : ven. 11/mai/2007 15:21
Re: [4.60] shader : reflection (env_map)
J'ai réussi à refaire marcher mon shader normalMap
:
http://keleb.free.fr/codecorner/downloa ... pPB460.zip
En gros, on peut convertir un shader Cg en shader HLSL compatible PB 4.60 en faisant comme ceci:
1) Passer l'utilitaire CgCompiler sur les fichiers du shader Cg avec le profil hlsl10. Exemple:
2) Dans les fichiers obtenus, virer les "#pragma pack_matrix(row_major)".
3) Si les tangentes du mesh sont utilisées dans les paramètres d'un vertex shader, remplacer:par
4) Ecrire le ".material" à partir du ".program" ou équivalent (un bout du shader qui indique les fichiers sources, les entry_point, les textures units, etc.). Attention: j'ai l'impression que Ogre 1.7 n'accepte pas les versions de shaders en dessous de 2.0 => pensez à vérifier les valeurs de "profiles vs_..." et "profiles ps_...".
Bon, j'imagine que l'on peut faire mieux ou autrement, mais avec ce shader-là, ça a marché...
[EDIT] Allez, un p'tit screenshot:


http://keleb.free.fr/codecorner/downloa ... pPB460.zip
En gros, on peut convertir un shader Cg en shader HLSL compatible PB 4.60 en faisant comme ceci:
1) Passer l'utilitaire CgCompiler sur les fichiers du shader Cg avec le profil hlsl10. Exemple:
Code : Tout sélectionner
cgc.exe -entry ambientOneTexture_vp -profile hlsl10v example_Basic.cg -o ambientOneTexture.hlsl
cgc.exe -entry specular_vp -profile hlsl10v example_bumpmapping.cg -o specular_vp.hlsl
cgc.exe -entry specular_fp -profile hlsl10f example_bumpmapping.cg -o specular_fp.hlsl
3) Si les tangentes du mesh sont utilisées dans les paramètres d'un vertex shader, remplacer:
Code : Tout sélectionner
in float3 _tangent : TEXCOORD1
Code : Tout sélectionner
in float3 _tangent : TANGENT
Bon, j'imagine que l'on peut faire mieux ou autrement, mais avec ce shader-là, ça a marché...
[EDIT] Allez, un p'tit screenshot:

Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Re: [4.60] shader : reflection (env_map)
classe 
je vais regarder ça.
Maintenant, reste plus qu'à convertir tes autres shaders
Refraction, miam
EDIT : par contre, il n'y a plus de spéculaires, on dirait sur ton exemple

je vais regarder ça.
Maintenant, reste plus qu'à convertir tes autres shaders

Refraction, miam

EDIT : par contre, il n'y a plus de spéculaires, on dirait sur ton exemple
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english