Vertexshader

Vertexshader
2005-10-21T10:04:12+02:00
2005-10-21T14:32:12+02:00
2022-10-27T11:05:40+02:00
dante
hello

a köv. problémám akadt.
adott egy vertexshader (lásd lent) amit az nvidia oldaláról kaptam le. a lényege egy specular fény létrehozása.
minden tökéletes addig amig a kamera a fény és az objektum között van. Ha viszont a kamera távolabb kerül a fénynél akkor az objektum teljesen fekete lesz, ezt viszon nem szeretném.


köszönettel
dante


struct vertout
{
float4 hpos : POSITION;
float4 color : COLOR0;
};

vertout main(
float4 pos : POSITION,
float4 Normal : NORMAL,
uniform float3 sieyepos,
uniform float4x4 simodelviewproj,
uniform float4x4 simodelviewIT,
uniform float4 silightposition_0)
{
vertout OUT;

OUT.hpos = mul( simodelviewproj, pos);

float3 normalVec = normalize(mul(simodelviewIT, Normal).xyz);

float3 lightVec = normalize(silightposition_0.xyz);

float3 eyeVec = sieyepos;
float3 halfVec = normalize(lightVec + eyeVec);

float diffuse = dot(normalVec,lightVec);
float specular = dot(normalVec, halfVec);
float4 lighting = lit(diffuse, specular,32);

float3 diffusematerial = float3(1,0,0);
float3 specularmaterial = float3(1,1,1);

OUT.color.rgb = lighting.y * diffusematerial+ lighting.z * specularmaterial;

OUT.color.a = 1.0;


return OUT;

}
Mutasd a teljes hozzászólást!
re,
akkor az van, h a light pozicioját a forráskodban a kamerával kötöd össze
( keresd a megfelelő cgglsetparamater... függvényt)
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd