hlsl normalize a float9 ?

Started by
3 comments, last by Hodgman 11 years ago

i have a float data[9];

i need to normalize this

but i tryed to do

data = normalize(data)

which it did not like , because its an array ,

how would i code this please

Advertisement

Ehm, language?

What sort of data does the float[9] represent? Is it a 3x3 matrix? or perhaps 3 Vector3's?

[size="2"]Currently working on an open world survival RPG - For info check out my Development blog:[size="2"] ByteWrangler

If data[9] is simply a 9 dimensional vector you can do it manually:


float z = 0;

for(int i = 0; i < 9; i++)
    z += pow(data, 2);

z = sqrt(z);

for(int i = 0; i < 9; i++)
    data /= z; //Or use a temporary vector if "data" is in a constant buffer

If data[9] is a 3x3 matrix divide each value by the determinant.

Do you have to normalize it in the shaders? It would be faster do normalize it in the CPU and send to the shaders.

It depends on how you define 'normalize'. With regards to length, like Tiago posted, so their Pythagorean length is 1? With regards to weighting so they sum to 1?

This topic is closed to new replies.

Advertisement