begin process at 2012 05 27 18:03:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > RAPELS DES FONCTIONS ET TECHNIQUES HLSL (CG)

RAPELS DES FONCTIONS ET TECHNIQUES HLSL (CG)


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Initié Date de création :04/08/2003 Date de mise à jour :04/08/2003 21:02:19 Vu :4 687

Auteur : BumpMANN

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note


 Description

C'est des rapels de comment calculer quoi, et aussi la technique du phong shading...

*************
rapels basé sur le hlsl,Cg (  language c, a peu pres)

produit scalaire de deux vecteurs (  dot product),
dot(v1,v2) correspond à v1.x * v2.x + v1.y * v2.y

longueur d'un vecteur (  théorème de pythagore):
length(v) correspond à sqr(dot(v,v))

normalisation d'un vecteur (  que sa longueur soit de 1 unité) :
normalize(v) correspond à v/sqr(dot(v,v)) donc
v/length(v)

Le demi-angle:
le vecteur "  bissectrice" (  pour les vecteurs, il me semble que ca ne se dit pas  )
demiangle = v1 + v2
aussi con que ca!

la lumière diffuse (  lumiere directionelle):
diff = max(0,dot(IN.normal,lightdir));

la lumière diffuse (  lumiere omnidirectionelle):
lightdir = normalize(lightpos - IN.position);
diff = max(0,dot(IN.normal,lightdir));

la lumiere speculaire (  en connaissant lightdir):
camdir = normalize(campos - IN.position);
demiangle = normalize(camdir + lightdir);
specnp = max(0,dot(IN.normal, demiangle));
spec = pow(specnp,intensite);

le simple effet de lumiere:
on cherche l'intensité de la diffuse et du speculaire dans le vertexshader, qu'on multiplie par les composants des materiaux utilisés (  ca donne une couleur), et cette couleur est automatiquement interpolée pour le pixelshader.

le phong shading, effet de lumiere avancé:
au lieu de donner la couleur du vertex, on donne la normale !  ! celle ci est interpolée de la même facon que la couleur. c'est donc dans le pixel shader que l'on calcule la lumiere !   ainsi la lumiere est calculée au pixel pres! mais seul les possédeurs d'une carte graphique ayant pas mal de registres (  supportant le directx 9 en général, donc radeon 9500 ou +, geforce fx) pourront se créer cette sublimitude  malheureusement pour moi, je n'ai qu'une radeon 9000... du manque de registres, je n'ai pu faire que le phong de la diffuse...  
note:
dans le pixelshader n'oubliez pas de normaliser la normale obtenue, car l'interpolation utilisée est linéaire et non pas sphérique. donc, en gros, ce ne serait pas aussi bien!

n'oubliez pas que vous avez les fonctions reflect et refract pour la réflection et réfraction... tres utile.

voila! j'espere que ca aura été utile!  


 Conclusion

Je sais que le Cg est un peu différent du c++, mais ca ressemble beaucoup...


 Sources du même auteur

Source avec Zip Source avec une capture OBJET 3D EN CONSOLE
Source avec Zip Source avec une capture MOTEUR 2D DIRECTX9 (+RÉSEAU)
Source avec Zip Source avec une capture EFFET 3D TRES REALISTE SUR SPRITE 2D > DIRECTX 9
Source avec Zip JEU DE CARNAGE EN DIRECTX - COMPLET ET FINI
Source avec Zip OPTIMISATIONS 3D

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de FearBlue le 17/09/2003 16:13:42

Merci bumpmann
Ces quelques functions pourraient peut etre s'avéré utilile pour mon prochain prog 3D :D

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales