» fr.EX9.Effect.Template
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

fr.EX9.Effect.Template

English | Italian | Spanish

The original english version of this page is newer and may contain information this translation does not have! Click here to view the english version.

Lorsqu'on souhaite créer un nouvel effet il est souvent pratique de démarrer à partir d'un modèle. Dans la catégorie de node EX9.Effect, vous pourrez trouver Template (EX9.Effect) qui constitue une bonne base de départ. Il contient la structure d'effet basique et implémente un vertex shader et un pixel shader élémentaires. Dans les faits, c'est un shading constant avec une texture simple.

Ce modèle est organisé en quatre sections:

  • Parameters
  • VertexShader
  • PixelShader
  • Techniques

Parameters

La section Paramètres commence par déclarer les matrices de transformation les plus courantes grâce aux sémantiques. Notez que la variable tW, qui est déclarée avec la sémantique WORLD, apparaît sous la forme d'un pin sur l'effet, ce qui n'est pas le cas des autres transformations. Les sémantiques VIEW et PROJECTION assignent leur matrice respective aux matrices tV et tP par les pins view et projection du Renderer (EX9).

Puis cette section déclare une texture et un sampler, auquel est assignée la texture. Le dernier paramètre est la matrice de transformation de texture.

Pour chaque effet, vous devez également spécifier quelles données vous souhaitez transférer du vertex shader vers le pixel shader sous forme de paramètre. C'est ce que l'on fait grâce à une structure:

{CODE(ln=>0)}
struct vs2ps
{

    float4 Pos  : POSITION;
    float2 TexCd : TEXCOORD0;

};
^

Notez que cette structure est réutilisée comme paramètre pour la fonction vertex shader:

 vs2ps VS(float4 PosO  : POSITION, float4 TexCd : TEXCOORD0)
 {..}

mais également comme paramètre d'entrée pour la fonction pixel shader:

 float4 PS(vs2ps In): COLOR
 {..}

Il n'est pas nécessaire d'utiliser une structure comme celle-ci. Vous pouvez ajouter des paramètres additionnels selon votre souhait.

Dans ce simple exemple, la structure ne contient que 2 types de valeurs: les vecteurs de position et de coordonnées de texture. Pour un effet réaliste, vous voudrez certainement passer d'avantage d'informations aux vertex shader et au pixel shader.

VertexShader

Le vertex shader du modèle ne fait pas grand chose. Il remplit seulement la structure de sortie avec les positions de vertex actuelles dans l'espace de projection:

 Out.Pos = mul(PosO, tWVP);

et les coordonnées de texture de vertex actuelles, transformées via la matrice de transformation de texture entrante:

 Out.TexCd = mul(TexCd, tTex);

PixelShader

La fonction pixel shader est encore plus simple. Elle prend les coordonnées de texture entrante pour un pixel donné, puis renvoie la couleur de sampler Samp à cette même position.

Techniques

Le modèle d'effet spécifie 2 techniques. TSimpleShader est la version cool, celle qui utilise les fonctions du shader. L'autre est moins intéressante car elle n'utilise que des instructions de fonction fixe, ce dont vous n'aurez probablement jamais besoin.

anonymous user login

Shoutbox

~15h ago

catweasel: @evvvvil Awesome!

~18h ago

mediadog: md.ecosystem link on staff contrib picks page is broken

~1d ago

evvvvil: "pencilvester's orthodoodle" orthographic raymarching gets all the birds chirpsing. https://www.shadertoy.com/view/wlyfWK

~2d ago

dottore: Kairos webinar! don't miss it ;) https://bit.ly/3quag3D

~4d ago

christosk: @schlonzo Thank you.

~4d ago

schlonzo: use different filenames :P counter is your friend

~4d ago

christosk: How do I record a sequence of images without having them overwriting one another? I

~9d ago

mediadog: Aha! Right-click on an image to get the source link