1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-10-23 18:07:41 +00:00

'cylidrical' stereo mode

This commit is contained in:
Zeno Rogue
2024-01-07 09:13:31 +01:00
parent cb8a3f5424
commit 0c34e9fd34
4 changed files with 15 additions and 3 deletions

View File

@@ -82,6 +82,12 @@ EX string panini_shader() {
"t.w = 1.;\n";
}
EX string cylindrical_shader() {
return
"t /= t.w;\n"
"t.y = atan2(t.y, length(t.xz)) * length(t.xz) * 2. / PI;\n";
}
EX string stereo_shader() {
return
"t.w += 1.; t *= 2. / t.w; t.w -= 1.;\n"
@@ -521,6 +527,11 @@ shared_ptr<glhr::GLprogram> write_shader(flagtype shader_flags) {
vmain += panini_shader();
shader_flags |= SF_ORIENT;
}
else if((shader_flags & SF_PERS3) && vid.stereo_mode == sCylindrical && !vrhr::rendering_eye()) {
vmain += "t = uPP * t;", vsh += "uniform mediump mat4 uPP;";
vmain += cylindrical_shader();
shader_flags |= SF_ORIENT;
}
else if((shader_flags & SF_PERS3) && vid.stereo_mode == sStereographic && !vrhr::rendering_eye()) {
vmain += "t = uPP * t;", vsh += "uniform mediump mat4 uPP;";
vmain += stereo_shader();