[Java3D] Appliquer un shader à un objet [Résolu]

The_Moye 21 Messages postés samedi 12 novembre 2005Date d'inscription 6 octobre 2008 Dernière intervention - 14 mai 2008 à 18:32 - Dernière réponse :  Utilisateur anonyme
- 16 mai 2008 à 18:35
Bonjour la populace!

Une petite question concernant l'utilisation de shaders sous Java3D.
En effet les tutos traitant des shaders en Java3D ne courent pas les rues!

Donc, j'ai créé un shader de la manière suivante :

Shader mon_shad = new SourceCodeShader(Shader.SHADING_LANGUAGE_GLSL, Shader.SHADER_TYPE_FRAGMENT, "test.frg");

Comme indiqué, je load mon fragment programm dans le fichier "test.frg", codé en GLSL.

Par contre, je ne sais pas comment appliquer ce shader une fois créé.

De l'aide serait bien venu :)

De plus, si vous avez des liens interessants sur l'utilisation de shaders avec java3d, je suis preneur!

Merci d'avance
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Utilisateur anonyme - 15 mai 2008 à 17:43
3
Merci
Je ne vois pas le problème puisque JOGL est portable, il marche aussi sous Macintosh, Linux, Unix Solaris et Windows, il est plus fiable que Java3D et fonctionne mieux dans les applets... Justement, il me semble que Java3D doit faire une manipulation pour que ton shader GLSL fonctionne même si le pipeline DirectX est utilisé.

Bon voilà un exemple avec CG :
Shader[] shaders = new Shader[1];
shaders[0] = new SourceCodeShader (Shader.SHADING_LANGUAGE_CG,
Shader.SHADER_TYPE_FRAGMENT,
"void main(float4 color : CLR, out float4 ocolor : CLR)\n{\nocolor = float4(1,1,1,1);\n}");

ShaderProgram shaderProgram = new CgShaderProgram();
shaderProgram.setShaders(shaders);

// Create shader appearance to hold the shader program and
// shader attributes
ShaderAppearance app = new ShaderAppearance();
app.setShaderProgram(shaderProgram);

// Create a Sphere object using the shader appearance,
// and add it into the scene graph.
Sphere sph = new Sphere(0.4f, Sphere.GENERATE_NRMALS, 30, app);
objTrans.addChild(sph);

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 15 mai 2008 à 08:16
0
Merci
Bonjour

Comme ton fragment est en GLSL, tu dépends d'OpenGL. Pense à utiliser JOGL (ou un autre binding) parce que je ne vois pas l'intérêt d'utiliser Java 3D si au final tu te restreins à un type d'environnement si ce n'est que ça te paraît plus simple. Voilà un exemple intéressant :
http://www.davidcornette.com/glsl/

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
Commenter la réponse de Utilisateur anonyme
The_Moye 21 Messages postés samedi 12 novembre 2005Date d'inscription 6 octobre 2008 Dernière intervention - 15 mai 2008 à 11:57
0
Merci
plop gouessej!
Merci de ta réponse, tu sembles très actif ici :D

Je ne compte pas me limiter à un seul environnement, l'idée serait de lancer mon application dans ma page internet, visible sur le plus de navigateurs et systemes possible.
Je fais deja de l'openGL depuis plusieurs années, si je voulais sortir un executable linux ou windows j'aurais codé en C++ OpenGL.

Le principe est vraiment d'intégré un contenu dynamique interessant et visuellement correcte à ma page internet, visible sur le plus de navigateurs possible.
N'ayant pas de licence flash, je me tourne donc vers java3D qui permet de faire des choses interessantes, j'ai travaillé sur un editeur de circuit pour un jeux il y a quelques années, mais sans shaders :p

Et puis j'ai utilisé GLSL car j'ai une pléthore de shaders fonctionnels sur les-quels j'ai travaillé l'an dernier.
Mais rien ne m'empecherais par la suite d'intégrer des shaders en CG dans mon application.

Mon problème pour le moment est vraiment d'appliquer le shader chargé sur un objet donné (tout en restant en Java3D)
Commenter la réponse de The_Moye
The_Moye 21 Messages postés samedi 12 novembre 2005Date d'inscription 6 octobre 2008 Dernière intervention - 15 mai 2008 à 17:57
0
Merci
Merci gouessej, je testerais ça des ce soir je pense.
Tu es certainement mon sauveur :x

Pourrais je savoir où tu as trouvé les renseignements nécessaires à l'utilisations de shaders?

Merci encore pour ton aide
Commenter la réponse de The_Moye
Utilisateur anonyme - 16 mai 2008 à 07:03
0
Merci
J'ai eu un mal fou à trouver un exemple, j'ai été sur Google Codesearch finalement.

Franchement, si tu as déjà de l'expérience en OpenGL et que tu veux écrire une application sans  te "limiter à un seul environnement", tu devrais sérieusement penser à utiliser JOGL. Tu dis que "l'idée serait de lancer mon application dans ma page internet", tu pourrais facilement utiliser JOGL avec Java Webstart pour faire ça et si tu veux voir ce que ça peut donner, suis le lien que je mets dans ma signature ci-dessous:

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
Commenter la réponse de Utilisateur anonyme
The_Moye 21 Messages postés samedi 12 novembre 2005Date d'inscription 6 octobre 2008 Dernière intervention - 16 mai 2008 à 11:49
0
Merci
Plop gouessj
Merci de t'être donné tant de mal ^^

Je suis deja passé sur ton lien, curieux que je suis!
Le probleme c'est que ton application se télécharge, puis s'execute en dehors de la page.
Ce n'est pas ce que je recherche, l'idée etant d'etre totallement intégré à ma page.
Peut etre est-ce possible de faire ça en JOGL, mais je ne connais pas du tout.

Peut etre as tu deja vu des page internet intégrant un module Virtools (permettant par exemple la navigation dans une scene 3d depuis la page internet), j'aimerais arriver à ce genre de chose (sans licence virtools, ça coute la peau du cul).
Commenter la réponse de The_Moye
Utilisateur anonyme - 16 mai 2008 à 13:52
0
Merci
Bonjour

Va voir JOGLAppletLauncher, tu peux tout à fait utiliser JOGL à l'intérieur d'une page web, c'est même très bien fait pour ça. Je te conseille d'utiliser JOGL car tu connais déjà OpenGL et JOGL marche très bien avec AWT et Swing, tu ne seras pas dépaysé et à quoi bon apprendre une API complètement nouvelle (Java3D) si au final tu peux en utiliser une autre qui vu ta situation serait plus rapide à apprendre? Je reste à ta disposition pour de plus amples informations. Bon sang c'est vrai que plus de 6000 internautes ont déjà testé TUER.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
Commenter la réponse de Utilisateur anonyme
The_Moye 21 Messages postés samedi 12 novembre 2005Date d'inscription 6 octobre 2008 Dernière intervention - 16 mai 2008 à 14:35
0
Merci
ok ok gouessej, je suivrais ton conseil, j'irais voir ce que raconte JOGL!

Merci pour ton aide sur les shaders, ça fonctionne niquel hu²
Commenter la réponse de The_Moye

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.