improve vr
This commit is contained in:
@@ -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];
|
auto layer_index = canvas->m_canvas->m_order[i];
|
||||||
for (int plane_index = 0; plane_index < 6; plane_index++)
|
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_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;
|
continue;
|
||||||
|
|
||||||
int z = (int)(canvas->m_canvas->m_order.size() - i);
|
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 };
|
glm::vec3 aspect = { (float)uirtt.getWidth() / (float)uirtt.getHeight(), 1.f, 1.f };
|
||||||
|
|
||||||
// draw the frame
|
// draw the frame
|
||||||
|
if (ui_visible)
|
||||||
{
|
{
|
||||||
auto mvp = proj * camera *
|
auto mvp = proj * camera *
|
||||||
glm::scale(glm::vec3(100)) *
|
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
|
// 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;
|
auto pos = mode->m_resizing ? mode->m_size_pos_start : mode->m_cur_pos;
|
||||||
if (App::I.keys[(int)kKey::KeyAlt] && !mode->m_resizing)
|
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::use(kShader::StrokePreview);
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_current_brush->m_tip_flow);
|
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);
|
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_vec4(kShaderUniform::Col, tip_color);
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP,
|
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
|
// 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 cur = (glm::vec2(cursor.x / width * zoom, 1.f - cursor.y / height * zoom) - 0.5f) * 2.f;
|
||||||
auto mvp = proj * camera *
|
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();
|
m_face_plane.draw_fill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
// draw the motion controller sphere
|
// draw the motion controller sphere
|
||||||
{
|
{
|
||||||
auto mvp = proj * camera * glm::translate(glm::normalize(vr_controller_pos));
|
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)));
|
ShaderManager::u_mat4(kShaderUniform::MVP, mvp * glm::scale(glm::vec3(.025)));
|
||||||
sphere.draw_fill();
|
sphere.draw_fill();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// draw the motion controller brush
|
// 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::use(kShader::StrokePreview);
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_current_brush->m_tip_flow);
|
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);
|
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_vec4(kShaderUniform::Col, tip_color);
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP,
|
ShaderManager::u_mat4(kShaderUniform::MVP,
|
||||||
|
|||||||
@@ -504,6 +504,10 @@ bool win32_vr_start()
|
|||||||
async_unlock();
|
async_unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (b == ViveController::kButton::Pad && a == ViveController::kAction::Press)
|
||||||
|
{
|
||||||
|
App::I.toggle_ui();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const float target_tick_rate = 90;
|
const float target_tick_rate = 90;
|
||||||
@@ -534,7 +538,7 @@ bool win32_vr_start()
|
|||||||
{
|
{
|
||||||
controller_points.add(App::I.vr_controller_pos * 800.f);
|
controller_points.add(App::I.vr_controller_pos * 800.f);
|
||||||
auto p = controller_points.average();
|
auto p = controller_points.average();
|
||||||
if (glm::distance(p, controller_last_point) > 1)
|
if (glm::distance(p, controller_last_point) > 10)
|
||||||
{
|
{
|
||||||
async_lock();
|
async_lock();
|
||||||
Canvas::I->stroke_update(p, vive->m_controllers[0].axis(ViveController::kButton::Trigger).x);
|
Canvas::I->stroke_update(p, vive->m_controllers[0].axis(ViveController::kButton::Trigger).x);
|
||||||
|
|||||||
Reference in New Issue
Block a user