diff options
author | Gunnar Sletta <gunnar.sletta@digia.com> | 2013-12-07 09:41:44 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-29 20:10:07 +0100 |
commit | 3f8d5d0ad7eee1defe81543cf12142779e9e4bfc (patch) | |
tree | 3ff4936d9f6a94a9a0117bf96c30ca421f27f9f6 /src/quick/scenegraph/shaders | |
parent | 1bea30278d8e1355457af582969fc3ff9b2ed298 (diff) |
Visualization modes for rendering.
There are two ways of setting this right now. One is to set it on
startup using an environment varible.
QSG_VISUALIZE=
"batches" - Visualize batchtes in the renderer. Merged batches are
drawn with solid color and Unmerged batches are drawn with a diagonal
line pattern. Few unique colors means good batching. Unmerged batches
are bad if they contain many individual nodes.
"clip" - Visualize clipping as red areas on top of the scene.
"overdraw" - Visualize all items in 3D to highlight overdraws. This mode
can also be used to detect geometry outside the viewport to some
extent. Opaque items are rendered with a green tint while translucent
items are rendered with a red tint. The bounding box for the viewport
is rendered in blue. Opaque content is easier for the scenegraph to
process and it can also be faster to render on some hardware.
"changes" - Changes in the scenegraph are visualized with a flashing
overlay with a random color. Changes on a primitive is visualized with
a solid color while changes in an ancestor, such as a matrix or
opacity changes is visualized with a pattern.
The second way to set the visualization mode is to set it at runtime
through QString QQuickWindowPrivate::customRenderMode. This "API" is
string based so it is not tied to the batch renderer and in theory can
support other custom renderers.
The visualized elements do not respect clipping and rendering order
is arbitrary.
Change-Id: I31efbe53fc905145bf48080ede3e36945cb60dcf
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Diffstat (limited to 'src/quick/scenegraph/shaders')
-rw-r--r-- | src/quick/scenegraph/shaders/visualization.frag | 11 | ||||
-rw-r--r-- | src/quick/scenegraph/shaders/visualization.vert | 22 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/quick/scenegraph/shaders/visualization.frag b/src/quick/scenegraph/shaders/visualization.frag new file mode 100644 index 0000000000..205b726c03 --- /dev/null +++ b/src/quick/scenegraph/shaders/visualization.frag @@ -0,0 +1,11 @@ +uniform lowp vec4 color; +uniform mediump vec4 tweak; // x,y -> width, height; z -> intensity of ; + +varying mediump vec2 pos; + +void main(void) +{ + lowp vec4 c = color; + c.xyz += pow(max(sin(pos.x + pos.y), 0.0), 2.0) * tweak.z * 0.1; + gl_FragColor = c; +} diff --git a/src/quick/scenegraph/shaders/visualization.vert b/src/quick/scenegraph/shaders/visualization.vert new file mode 100644 index 0000000000..f1892b71da --- /dev/null +++ b/src/quick/scenegraph/shaders/visualization.vert @@ -0,0 +1,22 @@ +attribute highp vec4 v; +uniform highp mat4 matrix; +uniform highp mat4 rotation; + +// w -> apply 3d rotation and projection +uniform lowp vec4 tweak; + +varying mediump vec2 pos; + +void main() +{ + vec4 p = matrix * v; + + if (tweak.w > 0.0) { + vec4 proj = rotation * p; + gl_Position = vec4(proj.x, proj.y, 0, proj.z); + } else { + gl_Position = p; + } + + pos = v.xy * 1.37; +} |