screen space pattern failed, needs screen space uv coordinate on CompDraw shader
This commit is contained in:
@@ -299,9 +299,11 @@
|
|||||||
<node height="30" justify="center" margin="0 0 5 0">
|
<node height="30" justify="center" margin="0 0 5 0">
|
||||||
<text text="Blend"/>
|
<text text="Blend"/>
|
||||||
</node>
|
</node>
|
||||||
|
<!--
|
||||||
<node height="30" justify="center" margin="0 0 5 0">
|
<node height="30" justify="center" margin="0 0 5 0">
|
||||||
<text text="Projection"/>
|
<text text="Projection"/>
|
||||||
</node>
|
</node>
|
||||||
|
-->
|
||||||
<node height="20" justify="center">
|
<node height="20" justify="center">
|
||||||
<text text="Apply"/>
|
<text text="Apply"/>
|
||||||
</node>
|
</node>
|
||||||
@@ -343,9 +345,11 @@
|
|||||||
<node height="30" width="100%" pad="1" dir="row" margin="0 0 5 0">
|
<node height="30" width="100%" pad="1" dir="row" margin="0 0 5 0">
|
||||||
<combobox id="pattern-blend-mode" width="100%" height="28" combo-list="Normal,-,Multiply,Subtract,Darken,Overlay,Color Dodge,Linear Burn,Hard Mix,-,Linear Height,Height"/>
|
<combobox id="pattern-blend-mode" width="100%" height="28" combo-list="Normal,-,Multiply,Subtract,Darken,Overlay,Color Dodge,Linear Burn,Hard Mix,-,Linear Height,Height"/>
|
||||||
</node>
|
</node>
|
||||||
|
<!--
|
||||||
<node height="30" width="100%" pad="1" dir="row" margin="0 0 5 0">
|
<node height="30" width="100%" pad="1" dir="row" margin="0 0 5 0">
|
||||||
<combobox id="pattern-proj-mode" width="100%" height="28" combo-list="Cube,Screen"/>
|
<combobox id="pattern-proj-mode" width="100%" height="28" combo-list="Cube,Screen"/>
|
||||||
</node>
|
</node>
|
||||||
|
-->
|
||||||
<node align="center" dir="row">
|
<node align="center" dir="row">
|
||||||
<checkbox id="pattern-eachsample" height="20" width="20"/>
|
<checkbox id="pattern-eachsample" height="20" width="20"/>
|
||||||
<text text="each sample"/>
|
<text text="each sample"/>
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ uniform mediump int blend_mode;
|
|||||||
uniform mediump vec2 resolution;
|
uniform mediump vec2 resolution;
|
||||||
uniform bool lock;
|
uniform bool lock;
|
||||||
uniform bool mask;
|
uniform bool mask;
|
||||||
|
uniform bool draw_on_screen;
|
||||||
|
|
||||||
uniform bool use_dual;
|
uniform bool use_dual;
|
||||||
uniform sampler2D tex_dual;
|
uniform sampler2D tex_dual;
|
||||||
@@ -54,6 +55,7 @@ void main()
|
|||||||
|
|
||||||
if (use_pattern)
|
if (use_pattern)
|
||||||
{
|
{
|
||||||
|
//mediump vec2 uv2 = draw_on_screen ? gl_FragCoord.st / resolution : uv;
|
||||||
mediump vec2 rscale = resolution / vec2(512.0);
|
mediump vec2 rscale = resolution / vec2(512.0);
|
||||||
mediump float patt = texture(tex_pattern, uv * (0.5 / pattern_scale) * rscale + pattern_offset).r;
|
mediump float patt = texture(tex_pattern, uv * (0.5 / pattern_scale) * rscale + pattern_offset).r;
|
||||||
if (pattern_invert)
|
if (pattern_invert)
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
|
|||||||
ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_layers[layer_index].m_opacity);
|
ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_layers[layer_index].m_opacity);
|
||||||
ShaderManager::u_int(kShaderUniform::Lock, canvas->m_canvas->m_layers[layer_index].m_alpha_locked);
|
ShaderManager::u_int(kShaderUniform::Lock, canvas->m_canvas->m_layers[layer_index].m_alpha_locked);
|
||||||
ShaderManager::u_int(kShaderUniform::Mask, canvas->m_canvas->m_smask_active);
|
ShaderManager::u_int(kShaderUniform::Mask, canvas->m_canvas->m_smask_active);
|
||||||
|
//ShaderManager::u_int(kShaderUniform::DrawOnScreen, true);
|
||||||
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
||||||
ShaderManager::u_int(kShaderUniform::UseDual, false);
|
ShaderManager::u_int(kShaderUniform::UseDual, false);
|
||||||
ShaderManager::u_int(kShaderUniform::UsePattern, b->m_pattern_enabled && !b->m_pattern_eachsample);
|
ShaderManager::u_int(kShaderUniform::UsePattern, b->m_pattern_enabled && !b->m_pattern_eachsample);
|
||||||
|
|||||||
@@ -252,6 +252,7 @@ void Canvas::stroke_draw_mix(const glm::vec2& bb_min, const glm::vec2& bb_sz)
|
|||||||
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
||||||
ShaderManager::u_int(kShaderUniform::Lock, false/*m_layers[layer_index].m_alpha_locked*/);
|
ShaderManager::u_int(kShaderUniform::Lock, false/*m_layers[layer_index].m_alpha_locked*/);
|
||||||
ShaderManager::u_int(kShaderUniform::Mask, false/*m_smask_active*/);
|
ShaderManager::u_int(kShaderUniform::Mask, false/*m_smask_active*/);
|
||||||
|
//ShaderManager::u_int(kShaderUniform::DrawOnScreen, false);
|
||||||
ShaderManager::u_int(kShaderUniform::UseDual, false);
|
ShaderManager::u_int(kShaderUniform::UseDual, false);
|
||||||
ShaderManager::u_int(kShaderUniform::UsePattern, false);
|
ShaderManager::u_int(kShaderUniform::UsePattern, false);
|
||||||
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
||||||
@@ -801,6 +802,7 @@ void Canvas::stroke_commit()
|
|||||||
ShaderManager::u_float(kShaderUniform::StrokeAlpha, b->m_tip_opacity);
|
ShaderManager::u_float(kShaderUniform::StrokeAlpha, b->m_tip_opacity);
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
||||||
ShaderManager::u_int(kShaderUniform::Mask, m_smask_active);
|
ShaderManager::u_int(kShaderUniform::Mask, m_smask_active);
|
||||||
|
//ShaderManager::u_int(kShaderUniform::DrawOnScreen, false);
|
||||||
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
||||||
ShaderManager::u_int(kShaderUniform::UseDual, b->m_dual_enabled);
|
ShaderManager::u_int(kShaderUniform::UseDual, b->m_dual_enabled);
|
||||||
@@ -1021,6 +1023,7 @@ void Canvas::layer_merge(int source_idx, int dest_idx) // m_layer index
|
|||||||
ShaderManager::u_float(kShaderUniform::PatternAlpha, 0);
|
ShaderManager::u_float(kShaderUniform::PatternAlpha, 0);
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, m_layers[source_idx].m_opacity);
|
ShaderManager::u_float(kShaderUniform::Alpha, m_layers[source_idx].m_opacity);
|
||||||
ShaderManager::u_int(kShaderUniform::Lock, false);
|
ShaderManager::u_int(kShaderUniform::Lock, false);
|
||||||
|
//ShaderManager::u_int(kShaderUniform::DrawOnScreen, false);
|
||||||
ShaderManager::u_int(kShaderUniform::BlendMode, m_layers[source_idx].m_blend_mode);
|
ShaderManager::u_int(kShaderUniform::BlendMode, m_layers[source_idx].m_blend_mode);
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
||||||
ShaderManager::u_int(kShaderUniform::UseDual, false);
|
ShaderManager::u_int(kShaderUniform::UseDual, false);
|
||||||
|
|||||||
@@ -1159,6 +1159,7 @@ void CanvasModeTransform::leave()
|
|||||||
ShaderManager::u_int(kShaderUniform::Mask, false);
|
ShaderManager::u_int(kShaderUniform::Mask, false);
|
||||||
ShaderManager::u_vec2(kShaderUniform::Resolution, Canvas::I->m_size);
|
ShaderManager::u_vec2(kShaderUniform::Resolution, Canvas::I->m_size);
|
||||||
ShaderManager::u_int(kShaderUniform::BlendMode, 0);
|
ShaderManager::u_int(kShaderUniform::BlendMode, 0);
|
||||||
|
//ShaderManager::u_int(kShaderUniform::DrawOnScreen, false);
|
||||||
ShaderManager::u_int(kShaderUniform::UseDual, false);
|
ShaderManager::u_int(kShaderUniform::UseDual, false);
|
||||||
ShaderManager::u_int(kShaderUniform::UsePattern, false);
|
ShaderManager::u_int(kShaderUniform::UsePattern, false);
|
||||||
|
|
||||||
|
|||||||
@@ -219,6 +219,7 @@ void NodeCanvas::draw()
|
|||||||
ShaderManager::u_float(kShaderUniform::Alpha, m_canvas->m_layers[layer_index].m_opacity);
|
ShaderManager::u_float(kShaderUniform::Alpha, m_canvas->m_layers[layer_index].m_opacity);
|
||||||
ShaderManager::u_int(kShaderUniform::Lock, m_canvas->m_layers[layer_index].m_alpha_locked);
|
ShaderManager::u_int(kShaderUniform::Lock, m_canvas->m_layers[layer_index].m_alpha_locked);
|
||||||
ShaderManager::u_int(kShaderUniform::Mask, m_canvas->m_smask_active);
|
ShaderManager::u_int(kShaderUniform::Mask, m_canvas->m_smask_active);
|
||||||
|
//ShaderManager::u_int(kShaderUniform::DrawOnScreen, true);
|
||||||
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z);
|
ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z);
|
||||||
ShaderManager::u_int(kShaderUniform::UseDual, b->m_dual_enabled);
|
ShaderManager::u_int(kShaderUniform::UseDual, b->m_dual_enabled);
|
||||||
|
|||||||
@@ -250,6 +250,7 @@ void NodePanelStroke::init_controls()
|
|||||||
};
|
};
|
||||||
|
|
||||||
m_brush_popup->on_brush_changed = [this](Node*, int index) {
|
m_brush_popup->on_brush_changed = [this](Node*, int index) {
|
||||||
|
m_dual_enabled->set_value(true, true);
|
||||||
if (on_dual_changed)
|
if (on_dual_changed)
|
||||||
on_dual_changed(this, m_brush_popup->get_texture_path(index), m_brush_popup->get_thumb_path(index));
|
on_dual_changed(this, m_brush_popup->get_texture_path(index), m_brush_popup->get_thumb_path(index));
|
||||||
m_dual_brush_thumb->set_image(m_brush_popup->get_thumb_path(index));
|
m_dual_brush_thumb->set_image(m_brush_popup->get_thumb_path(index));
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ void NodeStrokePreview::stroke_draw_mix(const glm::vec2& bb_min, const glm::vec2
|
|||||||
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
||||||
ShaderManager::u_int(kShaderUniform::Lock, false);
|
ShaderManager::u_int(kShaderUniform::Lock, false);
|
||||||
ShaderManager::u_int(kShaderUniform::Mask, false);
|
ShaderManager::u_int(kShaderUniform::Mask, false);
|
||||||
|
//ShaderManager::u_int(kShaderUniform::DrawOnScreen, false);
|
||||||
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
||||||
ShaderManager::u_int(kShaderUniform::UseDual, b->m_dual_enabled);
|
ShaderManager::u_int(kShaderUniform::UseDual, b->m_dual_enabled);
|
||||||
@@ -396,6 +397,7 @@ void NodeStrokePreview::draw_stroke()
|
|||||||
ShaderManager::u_vec2(kShaderUniform::Resolution, size);
|
ShaderManager::u_vec2(kShaderUniform::Resolution, size);
|
||||||
ShaderManager::u_float(kShaderUniform::StrokeAlpha, b->m_tip_opacity);
|
ShaderManager::u_float(kShaderUniform::StrokeAlpha, b->m_tip_opacity);
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
||||||
|
//ShaderManager::u_int(kShaderUniform::DrawOnScreen, false);
|
||||||
ShaderManager::u_int(kShaderUniform::Mask, false);
|
ShaderManager::u_int(kShaderUniform::Mask, false);
|
||||||
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ enum class kShaderUniform : uint16_t
|
|||||||
PatternBlendMode = const_hash("patt_blend_mode"),
|
PatternBlendMode = const_hash("patt_blend_mode"),
|
||||||
Colorize = const_hash("colorize"),
|
Colorize = const_hash("colorize"),
|
||||||
DualAlpha = const_hash("dual_alpha"),
|
DualAlpha = const_hash("dual_alpha"),
|
||||||
|
DrawOnScreen = const_hash("draw_on_screen"),
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class kShader : uint16_t
|
enum class kShader : uint16_t
|
||||||
|
|||||||
Reference in New Issue
Block a user