forked from 0ad/0ad
prefect
875cb3bca1
Add an "instancing" model renderer to improve rendering of non-transparent, unanimated models. This renderer is used when the vertexshader path is rendering path is used. This was SVN commit r3052.
30 lines
622 B
GLSL
30 lines
622 B
GLSL
|
|
// 3x4 part of the model-to-world matrix
|
|
attribute vec4 Instancing1;
|
|
attribute vec4 Instancing2;
|
|
attribute vec4 Instancing3;
|
|
|
|
// Calculate a normal that has been transformed for instancing
|
|
vec3 InstancingNormal(vec3 normal)
|
|
{
|
|
vec3 tmp;
|
|
|
|
tmp.x = dot(vec3(Instancing1), normal);
|
|
tmp.y = dot(vec3(Instancing2), normal);
|
|
tmp.z = dot(vec3(Instancing3), normal);
|
|
|
|
return tmp;
|
|
}
|
|
|
|
// Calculate position, transformed for instancing
|
|
vec4 InstancingPosition(vec4 position)
|
|
{
|
|
vec3 tmp;
|
|
|
|
tmp.x = dot(Instancing1, position);
|
|
tmp.y = dot(Instancing2, position);
|
|
tmp.z = dot(Instancing3, position);
|
|
|
|
return vec4(tmp, 1.0);
|
|
}
|