Qt3D Renderer Elements

From Qt Wiki
Revision as of 10:34, 24 February 2015 by Maintenance script (talk | contribs)
Jump to navigation Jump to search


[toc align_right="yes" depth="3"]

Qt3D Scene Structure and Elements

Renderer elements

The Renderer aspect defines its own set of elements.

Nodes

* Effect
Specifies a list of techniques and default values to be used by the renderer to properly assign shaders and uniforms.
* RenderPass
Specifies the ShaderProgram o be used for a pass of a technique.
The render pass should have a name.
* Technique
Contains a list of RenderPass elements.
* ShaderProgram
Has paths pointing to fragment and vertex shader sources.

http://i58.tinypic.com/35n0osi.png

FrameGraphItems

Only a single framegraph can be used at any moment for the rendering of the scene.

* Viewport
Defines the viewport rectangle to be used.Note : The viewport rectangle is defined from top left unlike OpenGL which defines it from bottom left.
* CameraSelector
Defines the camera entity to be used.
* RenderPassFilter
Defines the name of the RenderPass to be used.
* RenderTargetSelector
To be done - Defines the RenderTarget (Texture/FBO/Screen)
* TechniqueFilter
Defines the name of the technique to be used.

http://i59.tinypic.com/2885yit.png

Entity

* Scene
Has a source property that can be set to the path of a 3D scene file to be loaded into the current scenegraph tree.

Components

* Mesh
Specifies the path toward a mesh source file.
* Material
Specifies an Effect and may override uniforms set by the Effect to be used
by the Techniques' ShaderPrograms
Also specifies the textures.
* Shape
Can be a shaper of one of the types :
' Cube
'
Sphere
' Cylinder
'
Torus
Additional properties allow to further define the shape and its precision.
<br /> Mesh {<br /> id: ballMesh<br /> objectName: &quot;ballMesh&amp;quot;<br /> source: &quot;:/assets/ball.obj&amp;quot;<br /> }

Material {<br /> id: ballMaterial<br /> objectName: &quot;ballMaterial&amp;quot;<br /> // effect: adsEffect

// Custom properties go here<br /> }

Entity {<br /> id: ball<br /> objectName: &quot;ball&amp;quot;

property Transform transform: Transform {<br /> Translate{ dx: 0; dy: 10; dz : 25 }<br /> Scale {scale : 0.1}<br /> }<br /> property Mesh mesh: ballMesh<br /> property Material material: ballMaterial<br /> }

* FrameGraph
Defines the tree of FrameGraphItems to be used as the rendering pipeline.

import Qt3D 2.0
import Qt3D.Render 2.0

TechniqueFilter {

property alias viewportRect: viewport.rect
property alias cameraViewportTopRight: cameraSelectorTopRight.camera
property alias cameraViewportBottomLeft: cameraSelectorBottomLeft.camera

tags: [
Tag { name: "style&quot;; value: "forward&quot;}
]

Viewport {
id: viewport
objectName : "viewport&quot;
rect: Qt.rect(0.0, 0.0, 1.0, 1.0) // From Top Left

Viewport {
id : top_right_viewport
rect: Qt.rect(0.5, 0, 0.5, 0.5)
CameraSelector {
RenderPassFilter { renderPassName: "zFill&quot; }
RenderPassFilter { renderPassName: "lighting&quot; }
}
}

Viewport {
id : bottom_left_viewport
rect: Qt.rect(0.0, 0.5, 0.5, 0.5)
CameraSelector {
RenderPassFilter { renderPassName: "zFill&quot; }
RenderPassFilter { renderPassName: "lighting&quot; }
}
}
}
}