Les personnes qui suivent vvvv depuis ses tout débuts se souviennent sûrement de l'époque où il n'y avait pas encore de node de catégorie EX9. Le DX9 (ou DX8, comme il était appelé au commencement) a, lui, toujours était là. La classe EX9 n'a été introduite qu'avec l'apparition du support des effets dans vvvv.
Les primitives de la catégorie DX9 sont simples à utiliser, mais pas vraiment flexibles. Elles combinent géométrie et effet de dessin dans une seule node; en fait, elles sont toujours dessinées avec un shading constant. Pas d'éclairage, pas de multi-texturage, et en utilisant la node ArbitraryPoint (Transform) pour déformer la géométrie, on a toujours une impression de bricolage... Les nodes DX9 utilisent le pipeline à fonction fixe direct3d (certains d'entre vous savent peut-être de quoi il s'agit).
La catégorie EX9 offre un pipeline programmable direct3d à vvvv. La création de géométrie est ici séparée du dessin proprement dit, qui est désormais programmable par l'utilisateur via les nodes de la catégorie "EX9 Effect".
Les effets sont des containers pour les VertexShader et PixelShader qui, en retour, représentent les 2 étapes par lesquelles le dessin est effectué: lorsqu'il est tracé, chaque vertex d'une géométrie est d'abord passé dans le vertexshader, qui est un petit script qui opère sur les composantes de vertex. Ensuite, chaque pixel visible de la géométrie est passé dans un script de pixelshader qui, en fonction de l'éclairage, va laisser la texture et d'autres paramètres décider de la couleur du pixel.
Vvvv embarque quelques effets par défaut:
Ces effets fonctionnent très bien pour la création d'ébauches rapides mais se montrent vite limités. En revanche, ils peuvent être facilement adaptés pour utiliser plusieurs éclairages et textures, des shading spéciaux, etc.
Avant de plonger dans les codes de shader, clarifions certains termes. Assurez-vous de bien comprendre les bases de Mesh et Vertexbuffer en lisant la section EX9 Geometry. Avant de poursuivre, il est également recommandé de jeter un coup d'oeil à EX9 Spaces. Même si cela peut vous paraître un peu abstrait pour le moment, il est bon d'avoir déjà entendu parlé de tout ça et de savoir où regarder plus tard, en cas de problème.
Pour vous faire une idée de ce qui se passe en coulisse lorsque vvvv dessine une géométrie sur votre écran, jetez un coup d'oeil au diagramme de flux de données:
EX9 Dataflow
Vous aurez besoin de comprendre les bases de la structure des fichiers d'effet:
EX9 Effect File
Ici, la manière dont vvvv interprète les fichiers d'effet en tant que nodes d'effet:
EX9 Effect Node
A présent suivez le pas à pas à travers ce modèle d'effet, à partir duquel vous créerez certainement vos propres effets:
EX9 Effect Template
Avant de réellement coder vos propres shaders, vous pouvez lire une courte introduction au sujet de l'HLSL:
EX9 HLSL Introduction
Finalement, voici une liste de références qui s'avère pratique pendant l'écriture de shader:
EX9 HLSL Semantics sémantiques supportées par vvvv
EX9 HLSL Annotations annotations supportées par vvvv
Etats d'effets Direct3D renderstate et samplerstate
Fonctions intrinsèques HLSL fonctions d'origine
Types de données HLSL
Modèles de shader et profiles de shader
registres vs_2_0
registres ps_2_0
registres vs_3_0
registres ps_3_0
Divers:
VertexShader et PixelShader simples créés durant le node08.workshop (nécessite quelques adaptations).http://vvvv.org/tiki-download_file.php?fileId=1588node08_shader_programming.zip (23.79 Kb)</a>
anonymous user login
~1d ago
~7d ago
~7d ago
~8d ago
~21d ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago