CHAPTER 3 ■ WORKING WITH 2D IMAGES/TEXTURES IN XNA 3.0
266
float2 texCoords = inTexCoord.xy;
float birthTime = inTexCoord.z;
float maxAge = inTexCoord.w;
float3 moveDirection = inExtra.xyz;
float random = inExtra.w;
float age = xTime - birthTime;
float relAge = age/maxAge;
float sizer = saturate(1-relAge*relAge/2.0f);
float size = 5.0f*random*sizer;
float totalDisplacement = sin(relAge*6.28f/4.0f)*3.0f*random;
float3 billboardCenter = startingPosition + totalDisplacement*moveDirection;
billboardCenter += age*float3(0,-1,0)/1000.0f;
float3 finalPosition = BillboardVertex(billboardCenter, texCoords, size);
float4 finalPosition4 = float4(finalPosition, 1);
float4x4 preViewProjection = mul (xView, xProjection);
Output.Position = mul(finalPosition4, ...