Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

Qt3D Renderer Elements

From Qt Wiki
Jump to navigation Jump to search


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.

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.

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. =====

 Mesh {
 id: ballMesh
 objectName: "ballMesh"
 source: ":/assets/ball.obj"
 }

Material {
 id: ballMaterial
 objectName: "ballMaterial"
 // effect: adsEffect

// Custom properties go here
 }

Entity {
 id: ball
 objectName: "ball"

property Transform transform: Transform {
 Translate{ dx: 0; dy: 10; dz : 25 }
 Scale {scale : 0.1}
 }
 property Mesh mesh: ballMesh
 property Material material: ballMaterial
 }
  • 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"; value: "forward"}
 ]

Viewport {
 id: viewport
 objectName : "viewport"
 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" }
 RenderPassFilter { renderPassName: "lighting" }
 }
 }

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