Les Effets sont la méthode Direct3D pour combiner vertexshader et pixelshader dans un fichier.
Le schéma basique d'un effet est le suivant:
technique1
pass1 (vertexshader, pixelshader) pass2 (vertexshader, pixelshader) ..
technique2
pass1 (vertexshader, pixelshader) pass2 (vertexshader, pixelshader) ..
^
Un effet contient des paramètres qui sont utilisés par les fonctions du shader: les fonctions en elle-même et les techniques, ce qui vous permet de définir avec quel shader un objet est affiché, et d'établir un render state et un sampler state.
Les paramètres sont des variables, qui sont déclarées à l'intérieur d'un effet et sont soit établis directement dans l'effet, soit dans l'application (par exemple: via le patch vvvv). Les paramètres peuvent être n'importe lequel des types de données définis en HLSL.
Pour chaque paramètre défini dans un effet, vvvv crée un pin d'entrée approprié sur la node d'effet. Grâce à ces pins, des valeurs pour ces paramètres peuvent être établies depuis vvvv.
Des paramètres peuvent être assignés avec des sémantiques, qui sont un genre d'étiquette ou de déclaration et qui spécifient comment un paramètre doit être manipulé par l'application-hôte (ex: vvvv). Par exemple: si vous définissez un paramètre de type float4 (vecteur de 4 valeurs flottantes) et le déclarez avec la sémantique "COLOR", alors vvvv établira un pin d'entrée de couleur sur la node d'effet.
Via les sémantiques, vous avez également accès aux viewmatrix et projectionmatrix (et à toutes leurs combinaisons avec la matrice d'environnement) du renderer. Pour les paramètres de matrice déclarés avec une de ces sémantiques, aucun pin ne sera créé sur la node puisque ces matrices sont réglées automatiquement par la node d'effet et donc n'ont pas besoin d'être visibles par l'utilisateur (excepté pour la matrice d'environnement).
Toutes les sémantiques supportées par vvvv sont listées à la page EX9 HLSL Semantics.
Pour d'avantage de description de chaque paramètre, vous pouvez utiliser EX9.HLSL.Annotations.
Vvvv ne supporte actuellement que trois annotations. La plus importante à signaler est l'annotation "uiname" de type texte, qui définit un nom pour le pin représentant le paramètre d'effet dans l'interface utilisateur de vvvv. Si vous n'utilisez pas cette annotation, le pin sera nommé exactement comme le paramètre dans l'effet.
Comme dans n'importe quel langage de programmation moderne, vous pouvez définir des fonctions en HLSL pour encapsuler/modulariser un code. Les fonctions en HLSL sont déclarées semblablement au C/C++/C#. Elles ont un type, un nom, des paramètres et un corps de fonction. Un effet peut avoir plusieurs fonctions.
Les principales fonctions d'un effet sont les VertexShader et PixelShader. A l'intérieur de celles-ci peuvent être appelées d'autres fonctions.
Le VertexShader est une fonction qui est exécutée pour chaque vertex d'une géométrie (un modèle 3D). Dans un VertexShader, le calcul de vertex du pipeline de rendu est implémenté, ce qui signifie: WorldTransform, ViewTransform, éclairage et matière, et ProjectionTransform. Mais d'autres opérations avancées peuvent être également réalisées, tel que le vertexblending (pour l'animation) ou le morphing.
anonymous user login
~10h ago
~7d ago
~7d ago
~8d ago
~21d ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago