Forums Développement Multimédia

Aller au contenu

- - - - -

Comment utiliser deux textures bitmap sur un mesh mélangées en multiply ?

CODE Actionscript

5 réponses à ce sujet

#1 jon_xakaloz

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 16 April 2012 - 15:47 PM

Bonjour à tous,

Débutant sur Minko, je voudrais savoir comment superposer des textures bitmap en mode multiply par exemple sur un mesh ?

Merci d'avance,

cordialement,

Jon.

#2 Jean-Marc Le Roux

    Ceinture Noire

  • Minko
  • PipPipPipPipPipPipPip
  • 210 messages

Posté 17 April 2012 - 12:23 PM

Bonjour,

pour ça typiquement il faut faire un shader. Je te mets un code d'exemple fait pour Minko 2:


public class MultiplyTexturesShader extends BasicShader
{
  override protected function getPixelColor() : SFloat
  {
    var diffuseMap1 : SFloat = meshBindings.getTextureParameter('diffuseMap');
    var diffuseMap2 : SFloat = meshBindings.getTextureParameter('diffuseMap2');

    return multiply(diffuseMap1, diffuseMap2);
  }
}
 

Un SWC de Minko 2 et du code d'exemple sont dispos sur mon blog.

A bientôt,

#3 jon_xakaloz

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 17 April 2012 - 16:51 PM

J'ai essayé d'impémenter ton exemple en dupliquant l'exemple 02 du shader-workshop (d'ailleurs il manquait un "super.initializeScene();" pour faire marcher l'exemple) , mais sans succés.

J'ai une erreur : Error: A Sampler has no size

Voici le code de ma classe "MinkoExemple05" :

package aerys.minko.example05
{
import aerys.minko.Main;
import aerys.minko.example01.ColorShader;
import aerys.minko.render.effect.Effect;
import aerys.minko.scene.node.mesh.Mesh;
import aerys.minko.scene.node.mesh.geometry.primitive.CubeGeometry;
import aerys.minko.type.loader.TextureLoader;

public class MinkoExample05 extends Main
{
  [Embed(source="../assets/checker.jpg")]
  private static const TEXTURE_CHECKER : Class;

  [Embed(source="../assets/texture01.jpg")]
  private static const TEXTURE_CHECKER_2 : Class;

  override protected function initializeScene() : void
  {
   super.initializeScene();

   scene.addChild(new Mesh(
        CubeGeometry.cubeGeometry,
        { diffuseMap : TextureLoader.loadClass(TEXTURE_CHECKER), diffuseMap2 : TextureLoader.loadClass(TEXTURE_CHECKER_2)},
        new Effect(new MultiplyTextureShader())
   ));
  }
}
}
 

Et celui du shader "MultiplyTextureShader" :

package aerys.minko.example05
{
import aerys.minko.render.effect.basic.BasicShader;
import aerys.minko.render.shader.SFloat;
import aerys.minko.render.shader.Shader;
import aerys.minko.render.shader.ShaderSettings;

public class MultiplyTextureShader extends BasicShader
{

  override protected function getPixelColor():SFloat
  {
 
   var diffuseMap_1 : SFloat = meshBindings.getTextureParameter('diffuseMap');
   var diffuseMap_2 : SFloat = meshBindings.getTextureParameter('diffuseMap2');
 
   return multiply(diffuseMap_1, diffuseMap_2);
  }
}
}
 

Merci encore !

#4 jon_xakaloz

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 17 April 2012 - 16:56 PM

J'ai réussi en regardant bien le TextureShader de l'exemple.

Il manquait sampleTexture(...).

Voici le Shader qui fonctionne :

package aerys.minko.example05
{
        import aerys.minko.render.effect.basic.BasicShader;
        import aerys.minko.render.shader.SFloat;
        import aerys.minko.render.shader.Shader;
        import aerys.minko.render.shader.ShaderSettings;
       
        public class MultiplyTextureShader extends BasicShader
        {
               
                override protected function getPixelColor():SFloat
                {
                       
                        var diffuseMap_1 : SFloat = sampleTexture(meshBindings.getTextureParameter('diffuseMap'), interpolate(vertexUV));
                        var diffuseMap_2 : SFloat = sampleTexture(meshBindings.getTextureParameter('diffuseMap2'), interpolate(vertexUV));
                       
                        return multiply(diffuseMap_1, diffuseMap_2);
                }
        }
}

Merci !

#5 jon_xakaloz

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 19 April 2012 - 08:30 AM

Minko 2 n'étant pas "officiellement" disponible, et la syntaxe changeant par rapport à Minko 1, j'aimerais adapter le shader à la version 1.2 de Minko mais je n'y arrive pas.

Quelqu'un saurait-il le faire ?

Merci d'avance !

D'ailleurs (mode relou) pour quand est prévu Minko 2 ?

#6 Jean-Marc Le Roux

    Ceinture Noire

  • Minko
  • PipPipPipPipPipPipPip
  • 210 messages

Posté 19 April 2012 - 14:51 PM

Demain aprem en beta sur GitHub.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP