improve vr

This commit is contained in:
2019-05-20 10:23:02 +02:00
parent ad9ada7884
commit 0e22e9918a
2 changed files with 16 additions and 4 deletions

View File

@@ -69,9 +69,10 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
auto layer_index = canvas->m_canvas->m_order[i];
for (int plane_index = 0; plane_index < 6; plane_index++)
{
if (!canvas->m_canvas->m_layers[layer_index]->m_visible ||
if (!(canvas->m_canvas->m_show_tmp && canvas->m_canvas->m_current_layer_idx == layer_index) &&
(!canvas->m_canvas->m_layers[layer_index]->m_visible ||
canvas->m_canvas->m_layers[layer_index]->m_opacity == .0f ||
!canvas->m_canvas->m_layers[layer_index]->m_dirty_face[plane_index])
!canvas->m_canvas->m_layers[layer_index]->m_dirty_face[plane_index]))
continue;
int z = (int)(canvas->m_canvas->m_order.size() - i);
@@ -184,6 +185,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
glm::vec3 aspect = { (float)uirtt.getWidth() / (float)uirtt.getHeight(), 1.f, 1.f };
// draw the frame
if (ui_visible)
{
auto mvp = proj * camera *
glm::scale(glm::vec3(100)) *
@@ -197,7 +199,8 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
}
// draw the brush
if (auto mode = dynamic_cast<CanvasModePen*>(canvas->m_canvas->modes[(int)canvas->m_canvas->m_current_mode][0]))
auto mode = dynamic_cast<CanvasModePen*>(canvas->m_canvas->modes[(int)canvas->m_canvas->m_current_mode][0]);
if (ui_visible && mode)
{
auto pos = mode->m_resizing ? mode->m_size_pos_start : mode->m_cur_pos;
if (App::I.keys[(int)kKey::KeyAlt] && !mode->m_resizing)
@@ -207,6 +210,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
ShaderManager::use(kShader::StrokePreview);
ShaderManager::u_int(kShaderUniform::Tex, 0);
ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_current_brush->m_tip_flow);
ShaderManager::u_int(kShaderUniform::DrawOutline, false);
auto tip_color = glm::vec4(glm::vec3(canvas->m_canvas->m_current_brush->m_tip_color), 1);
ShaderManager::u_vec4(kShaderUniform::Col, tip_color);
ShaderManager::u_mat4(kShaderUniform::MVP,
@@ -245,6 +249,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
}
// draw the cursor
if (ui_visible)
{
auto cur = (glm::vec2(cursor.x / width * zoom, 1.f - cursor.y / height * zoom) - 0.5f) * 2.f;
auto mvp = proj * camera *
@@ -260,6 +265,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
m_face_plane.draw_fill();
}
/*
// draw the motion controller sphere
{
auto mvp = proj * camera * glm::translate(glm::normalize(vr_controller_pos));
@@ -268,6 +274,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
ShaderManager::u_mat4(kShaderUniform::MVP, mvp * glm::scale(glm::vec3(.025)));
sphere.draw_fill();
}
*/
// draw the motion controller brush
{
@@ -275,6 +282,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
ShaderManager::use(kShader::StrokePreview);
ShaderManager::u_int(kShaderUniform::Tex, 0);
ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_current_brush->m_tip_flow);
ShaderManager::u_int(kShaderUniform::DrawOutline, false);
auto tip_color = glm::vec4(glm::vec3(canvas->m_canvas->m_current_brush->m_tip_color), 1);
ShaderManager::u_vec4(kShaderUniform::Col, tip_color);
ShaderManager::u_mat4(kShaderUniform::MVP,

View File

@@ -504,6 +504,10 @@ bool win32_vr_start()
async_unlock();
}
}
if (b == ViveController::kButton::Pad && a == ViveController::kAction::Press)
{
App::I.toggle_ui();
}
};
const float target_tick_rate = 90;
@@ -534,7 +538,7 @@ bool win32_vr_start()
{
controller_points.add(App::I.vr_controller_pos * 800.f);
auto p = controller_points.average();
if (glm::distance(p, controller_last_point) > 1)
if (glm::distance(p, controller_last_point) > 10)
{
async_lock();
Canvas::I->stroke_update(p, vive->m_controllers[0].axis(ViveController::kButton::Trigger).x);