46 lines
2.7 KiB
C++
46 lines
2.7 KiB
C++
char volume_multipass_vert[] = "#version 110\n"
|
|
"\n"
|
|
"uniform mat4 texgen;\n"
|
|
"\n"
|
|
"varying vec4 cameraPos;\n"
|
|
"varying vec4 vertexPos;\n"
|
|
"varying vec3 lightDirection;\n"
|
|
"varying mat4 texgen_withProjectionMatrixInverse;\n"
|
|
"varying vec4 baseColor;\n"
|
|
"\n"
|
|
"varying float near;\n"
|
|
"varying float far;\n"
|
|
"varying float near_mult_far;\n"
|
|
"varying float far_sub_near;\n"
|
|
"\n"
|
|
"void main(void)\n"
|
|
"{\n"
|
|
" // compute near and far values from projection matrix.\n"
|
|
" near = gl_ProjectionMatrix[2][3] / (gl_ProjectionMatrix[2][2]-1.0);\n"
|
|
" far = gl_ProjectionMatrix[2][3] / (1.0+gl_ProjectionMatrix[2][2]);\n"
|
|
"\n"
|
|
" near_mult_far = near*far;\n"
|
|
" far_sub_near = far-near;\n"
|
|
"\n"
|
|
" gl_Position = ftransform();\n"
|
|
"\n"
|
|
" cameraPos = gl_ModelViewMatrixInverse * vec4(0,0,0,1);\n"
|
|
" vertexPos = gl_Vertex;\n"
|
|
" baseColor = gl_FrontMaterial.diffuse;\n"
|
|
"\n"
|
|
" vec4 lightPosition = gl_ModelViewMatrixInverse * gl_LightSource[0].position;\n"
|
|
" if (lightPosition[3]==0.0)\n"
|
|
" {\n"
|
|
" // directional light source\n"
|
|
" lightDirection = -normalize(lightPosition.xyz);\n"
|
|
" }\n"
|
|
" else\n"
|
|
" {\n"
|
|
" // positional light source\n"
|
|
" lightDirection = normalize((lightPosition-vertexPos).xyz);\n"
|
|
" }\n"
|
|
"\n"
|
|
" texgen_withProjectionMatrixInverse = texgen * gl_ProjectionMatrixInverse;\n"
|
|
"}\n"
|
|
"\n";
|