Envoyé par
Tomaka17
Je voterais bien pour le FPS juste pour voir comment Sébum va se démerder pour parler des matrices, ainsi que du row-major/column-major/pre-multiplying/post-multiplying/left-handed/right-handed
Je n'en parlerai pas. Si c'est un projet 3D qui est choisi, on utilisera un moteur 3D C# clefs-en-main à la place de XNA.
Je bosse depuis un peu plus d'un an sur un moteur 3D XNA, je suis bien placé pour savoir que c'est impossible à expliquer en un an à raison d'une page par numéro.
Et puis je ne me vois pas expliquer ce genre de trucs...
Code:
VS_OUTPUT VS_Bump_Lights(VS_INPUT IN)
{
VS_OUTPUT OUT;
float3 worldPos = mul(float4(IN.position, 1.0f), worldMatrix).xyz;
float3 viewDir = cameraPos - worldPos;
float3 lightDir = (lightPosition - worldPos) / lightRadius;
float3 n = mul(IN.normal, (float3x3)worldInverseTransposeMatrix);
float3 t = mul(IN.tangent.xyz, (float3x3)worldInverseTransposeMatrix);
float3 b = cross(n, t) * IN.tangent.w;
float3x3 tbnMatrix = float3x3(t.x, b.x, n.x,
t.y, b.y, n.y,
t.z, b.z, n.z);
OUT.position = mul(float4(IN.position, 1.0f), worldViewProjectionMatrix);
OUT.texCoord = IN.texCoord;
OUT.viewDir = mul(viewDir, tbnMatrix);
OUT.lightDir = mul(lightDir, tbnMatrix);
float4 diffuse;
diffuse.a = 1;
diffuse.rgb = lightColor.rgb;
for (int i = 0; i < lightCount; i++)
{
float lightdist = distance(worldPos, lightsPos[i]);
if ((lightsRange[i] > 0) && (lightdist < lightsRange[i]))
{
diffuse.r = max(diffuse.r, lightColors[i].r * 1 - (lightdist / lightsRange[i]));
diffuse.g = max(diffuse.g, lightColors[i].g * 1 - (lightdist / lightsRange[i]));
diffuse.b = max(diffuse.b, lightColors[i].b * 1 - (lightdist / lightsRange[i]));
}
}
OUT.diffuse = diffuse;
OUT.distance = distance(cameraPos, worldPos);
return OUT;
}
...à des débutants.
Et oui, je sais, c'est codé n'importe comment, je déteste les vertex shaders, je suis une quiche en trigo.
Envoyé par
Molina
Mon coeur penche pour le rogue like/RPG. Mais, on apprendra à faire des boites de dialogue, ou alors ça ne sera que combat combat combat combat ? (Dans ce cas, je préfère encore le jeu d'aventure).
Rien n'est définitif, mais ce sera de toute façon un RPG très orienté action/loot. Cela dit, il y aura quand même des boites de dialogue (ne serait-ce que pour l'inventaire, la feuille de perso...)