mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-06-27 07:22:51 +00:00
vr:: implemented eCompScreen::single
This commit is contained in:
parent
1dc2041dab
commit
9dfa4516ed
35
shaders.cpp
35
shaders.cpp
@ -552,40 +552,35 @@ void display_data::set_projection(int ed, ld shift) {
|
|||||||
|
|
||||||
bool u_alpha = false;
|
bool u_alpha = false;
|
||||||
|
|
||||||
if(shader_flags & SF_PIXELS) {
|
auto use_mv = [cd] {
|
||||||
#if CAP_VR
|
#if CAP_VR
|
||||||
if(vrhr::rendering_eye()) {
|
if(vrhr::rendering_eye()) {
|
||||||
glhr::projection_multiply(glhr::tmtogl_transpose(vrhr::hmd_mvp));
|
glhr::projection_multiply(glhr::tmtogl_transpose(vrhr::hmd_mvp));
|
||||||
glhr::id_modelview();
|
glhr::id_modelview();
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
#endif
|
glhr::projection_multiply(glhr::frustum(cd->tanfov, cd->tanfov * cd->ysize / cd->xsize));
|
||||||
ortho(cd->xsize/2, -cd->ysize/2);
|
glhr::projection_multiply(glhr::tmtogl_transpose(vrhr::hmd_mv));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
if(shader_flags & SF_PIXELS) {
|
||||||
|
if(vrhr::rendering()) use_mv();
|
||||||
|
else ortho(cd->xsize/2, -cd->ysize/2);
|
||||||
}
|
}
|
||||||
else if(shader_flags & SF_BOX) {
|
else if(shader_flags & SF_BOX) {
|
||||||
#if CAP_VR
|
if(vrhr::rendering()) use_mv();
|
||||||
if(vrhr::rendering_eye()) {
|
else ortho(cd->xsize/current_display->radius/2, -cd->ysize/current_display->radius/2);
|
||||||
glhr::projection_multiply(glhr::tmtogl_transpose(vrhr::hmd_mvp));
|
|
||||||
glhr::id_modelview();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
ortho(cd->xsize/current_display->radius/2, -cd->ysize/current_display->radius/2);
|
|
||||||
}
|
}
|
||||||
else if(shader_flags & SF_ODSBOX) {
|
else if(shader_flags & SF_ODSBOX) {
|
||||||
ortho(M_PI, M_PI);
|
ortho(M_PI, M_PI);
|
||||||
glhr::fog_max(1/sightranges[geometry], darkena(backcolor, 0, 0xFF));
|
glhr::fog_max(1/sightranges[geometry], darkena(backcolor, 0, 0xFF));
|
||||||
}
|
}
|
||||||
else if(shader_flags & SF_PERS3) {
|
else if(shader_flags & SF_PERS3) {
|
||||||
#if CAP_VR
|
if(vrhr::rendering()) use_mv();
|
||||||
if(vrhr::rendering_eye()) {
|
|
||||||
glhr::projection_multiply(glhr::tmtogl_transpose(vrhr::hmd_mvp));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if(0) {}
|
|
||||||
#endif
|
|
||||||
else {
|
else {
|
||||||
glhr::projection_multiply(glhr::frustum(current_display->tanfov, current_display->tanfov * cd->ysize / cd->xsize));
|
glhr::projection_multiply(glhr::frustum(cd->tanfov, cd->tanfov * cd->ysize / cd->xsize));
|
||||||
glhr::projection_multiply(glhr::scale(1, -1, -1));
|
glhr::projection_multiply(glhr::scale(1, -1, -1));
|
||||||
if(nisot::local_perspective_used()) {
|
if(nisot::local_perspective_used()) {
|
||||||
if(prod) {
|
if(prod) {
|
||||||
|
39
vr.cpp
39
vr.cpp
@ -60,8 +60,8 @@ vector<pair<string, string> > eyes_desc = {
|
|||||||
/* not implemented */
|
/* not implemented */
|
||||||
vector<pair<string, string> > comp_desc = {
|
vector<pair<string, string> > comp_desc = {
|
||||||
{"none", "Do not display anything on the computer screen."},
|
{"none", "Do not display anything on the computer screen."},
|
||||||
{"reference", "Display the view from the reference point."},
|
{"reference", "Display the standard HyperRogue view from the reference point."},
|
||||||
{"single", "(not implemented)"}, // "Display a single monocular image."},
|
{"single", "Display a a single monocular image from the headset."},
|
||||||
{"eyes", "Display a copy of the VR display."},
|
{"eyes", "Display a copy of the VR display."},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -829,9 +829,6 @@ EX void render() {
|
|||||||
|
|
||||||
for(int i=0; i<3; i++) {
|
for(int i=0; i<3; i++) {
|
||||||
|
|
||||||
dynamicval<int> vx(vid.xres, vrdata.xsize);
|
|
||||||
dynamicval<int> vy(vid.yres, vrdata.ysize);
|
|
||||||
|
|
||||||
if(1) {
|
if(1) {
|
||||||
make_actual_view();
|
make_actual_view();
|
||||||
shiftmatrix Tv = cview();
|
shiftmatrix Tv = cview();
|
||||||
@ -874,6 +871,9 @@ EX void render() {
|
|||||||
|
|
||||||
if(i != 2) {
|
if(i != 2) {
|
||||||
|
|
||||||
|
dynamicval<int> vx(vid.xres, vrdata.xsize);
|
||||||
|
dynamicval<int> vy(vid.yres, vrdata.ysize);
|
||||||
|
|
||||||
auto& ey = vrdata.eyes[i];
|
auto& ey = vrdata.eyes[i];
|
||||||
|
|
||||||
glBindFramebuffer( GL_FRAMEBUFFER, ey->m_nRenderFramebufferId );
|
glBindFramebuffer( GL_FRAMEBUFFER, ey->m_nRenderFramebufferId );
|
||||||
@ -887,27 +887,28 @@ EX void render() {
|
|||||||
calcparam();
|
calcparam();
|
||||||
drawqueue();
|
drawqueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(i == 2) {
|
||||||
|
rb.reset();
|
||||||
|
calcparam();
|
||||||
|
current_display->set_viewport(0);
|
||||||
|
calcparam();
|
||||||
|
current_display->next_shader_flags = 0;
|
||||||
|
current_display->set_all(0, 0);
|
||||||
|
|
||||||
|
if(cscr == eCompScreen::single) {
|
||||||
|
state = 4;
|
||||||
|
drawqueue();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rb.reset();
|
|
||||||
|
|
||||||
calcparam();
|
|
||||||
current_display->set_viewport(0);
|
|
||||||
calcparam();
|
|
||||||
current_display->next_shader_flags = 0;
|
|
||||||
current_display->set_all(0, 0);
|
|
||||||
|
|
||||||
if(cscr == eCompScreen::eyes) draw_eyes();
|
if(cscr == eCompScreen::eyes) draw_eyes();
|
||||||
|
|
||||||
if(cscr == eCompScreen::single) {
|
|
||||||
/* todo */
|
|
||||||
state = 4;
|
|
||||||
drawqueue();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(cscr == eCompScreen::reference) {
|
if(cscr == eCompScreen::reference) {
|
||||||
state = 3;
|
state = 3;
|
||||||
drawqueue();
|
drawqueue();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user