stereographic projection added

This commit is contained in:
Zeno Rogue
2021-03-21 12:51:50 +01:00
parent 421ff4a94a
commit 0f081fb1ab
5 changed files with 63 additions and 7 deletions
+15
View File
@@ -77,6 +77,17 @@ EX string panini_shader() {
"t.w = 1.;\n";
}
EX string stereo_shader() {
return
"t.w += 1.; t *= 2. / t.w; t.w -= 1.;\n"
"float s = t.z;\n"
"float l = length(t.xyz);\n"
"t /= max(l, 1e-2);\n"
"t.z += " + glhr::to_glsl(panini_alpha) + ";\n"
"t *= l;\n"
"t.w = 1.;\n";
}
shared_ptr<glhr::GLprogram> write_shader(flagtype shader_flags) {
string varying, vsh, fsh, vmain = "void main() {\n", fmain = "void main() {\n";
@@ -415,6 +426,10 @@ shared_ptr<glhr::GLprogram> write_shader(flagtype shader_flags) {
vmain += panini_shader();
shader_flags |= SF_ORIENT;
}
else if((shader_flags & SF_PERS3) && stereo_alpha) {
vmain += "t = uPP * t;", vsh += "uniform mediump mat4 uPP;";
vmain += stereo_shader();
}
vmain += "gl_Position = uP * t;\n";
}