Mai 20, 2012, 05:36:12 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.

Connexion avec identifiant, mot de passe et durée de la session

img
 Coding : IA Car Engine
img
 Demo : La chambre d'hôtel
img
 Demo : Egouts infernaux
img
 Demo : Papillon Mouche
img img img img img img img    
   Accueil   Aide Rechercher Identifiez-vous Inscrivez-vous  
Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: [GLSL] Exemple basic d'une texture avec masque alpha  (Lu 3373 fois)
Groundhog
Webmaster
Squatteur
*****
Sexe: Homme
Messages: 589



WWW
« le: Mars 04, 2008, 09:05:56 »

Voila le code de base avec deux textures, la texture de base ( couleur ) plus une en niveau de gris qu'on va utiliser pour contrôler le canal alpha.

Notez qu'il faut absolument ajouter  opacity avec une valeur inférieure à 1.0 dans la déclaration du material pour que la transparence alpha soit prise en compte dans le shader ogsl

Évidemment, pour que le shader soit parfaitement exploitable dans un projet, faudrait aussi ajouter le calcul de la lumière, mais c'est pas le but de l'exemple si présent  roll

J'ai ajouté des couleurs pour mieux suivre la démarche.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<demoniak3d>

<scene name="Demo Alpha Mask"  display_fps="TRUE" vsync="TRUE" show_ref_grid="FALSE" display_hyperion_logo="TRUE" > <infos
      title="opacity mask"
      author="www.Steph3D.net"
      description="mini tut" />
   <window_size width="1024" height="768" />
   <global_ambient_light r="0.1" g="0.1" b="0.1" a="1.0" />
   <background_color r="0.2" g="0.3" b="0.3" />
   <check_hardware_caps glsl="TRUE" />
</scene>

<camera name="Main_Camera" navigation_mode="FLY" display_position="FALSE" display_view_direction="FALSE" >
   <position x="-4.60" y="92.95" z="395.69" />
   <lookat x="0.01" y="-0.18" z="-0.98" w="0.0" />
</camera>

<mesh name="mesh_plane" shape_type="PLANE" lighting="FALSE" texturing="TRUE" polygon_mode="SOLID" use_vbo="TRUE" >
   <plane x_size="400.0" z_size="400.0" num_segs_x="10" num_segs_z="10" />
   <attach_material name="Mat01" />
   
   <texture material_name="Mat01" texture_name="txt1" texture_unit="0" />
   <texture material_name="Mat01" texture_name="txt2" texture_unit="1" />

   
   <position x="0.0" y="0.0" z="0.0" />
   <orientation pitch="90.0" />
</mesh>


<material name="Mat01" shader_program_name="Shader01" opacity="0.0" />

<texture name="txt1" filename="GFX/GPUcolor.jpg" filtering_mode="TRUE" />
<texture name="txt2" filename="GFX/GPUmask.jpg" filtering_mode="TRUE" />


<shader_program name="Shader01"  >
   <constant_1i name="Color" value="0" />
   <constant_1i name="Mask" value="1" />   
   <raw_data><![CDATA[   

      [Vertex_Shader]

      void main()
      {   
         gl_TexCoord[0] = gl_MultiTexCoord0; // UVW des couleur sur le canal 0
         gl_TexCoord[1] = gl_MultiTexCoord1; // UVW du mask sur le canal 1
         gl_Position = ftransform();      
      }
      [Pixel_Shader]
      
      uniform sampler2D Color; // déclaration de la map de couleur
      uniform sampler2D Mask; // déclaration de la map mask
      
      void main (void)
      {
         gl_FragColor = texture2D( Color, gl_TexCoord[0].xy); // texture de couleur
         gl_FragColor.a = texture2D( Mask, gl_TexCoord[1].xy); // texture pour l'alpha mask
      }

         ]]></raw_data>

</shader_program>

</demoniak3d>

* AlphaShader.zip (98.45 Ko - Téléchargé 230 fois.)
Journalisée

Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

WebDesign by www.Steph3D.net © 2007
Powered by SMF 1.1.16 | SMF © 2006, Simple Machines
All images and animations, by Steph3D.net © 2002-2011 All Rights Reserved