Juillet 31, 2010, 03:42:12 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.

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

img
 Coding de pixel shaders
img
 Demo "L'étrange Distillerie"
img
 Logo GPU
img
 oZone3D engine
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 2762 fois)
Steph3D
Infographiste ou programmeur ?
Administrator
Squatteur
*****
Hors ligne Hors ligne

Sexe: Homme
Messages: 547


Hamster nain géant de l'espace


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é 193 fois.)
Journalisée

Steph poucehaut
Chasseur de Vikings et de Pilous
PS : Pour des questions, s'il vous plaît, merci de bien vouloir utiliser les forums
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

WebDesign by Steph3D © 2007
Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC
All images and animations, by LAUX Stéphane, Copyright © 2002-2007 All Rights Reserved