Skip to content

GFX.Render

Name Mandatory Description Default Type
⬅️ Input The input of this shard is ignored. None
Output ➡️ This shard outputs none. None
Steps No Sequence of render pass objects to process. none Var([GFX.PipelineStep])[GFX.PipelineStep]
View No The view to render. If no view object is provided, the default view will be used. none NoneVar(GFX.View)

This shard takes the sequence of render pass objects specified in the Steps parameter, processes it sequentially, and renders the final scene based on the view object specified in the View parameter.

Details

This function should be used only once per rendered frame.

It takes a View or sequence of Views that represent the main camera as a parameter.

Info

If neither :View nor :Views is specified, the renderer will use a default view with both identity view and projection matrices.

The :Steps parameter contains the list of rendering operations to perform. This can be a sequence of objects created by one of the following:

Default queue

If no render queue is specified, this command reads from a global default queue.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@template(spin-transform [t location] {
  t | Math.Multiply(0.2) | Math.AxisAngleX | Math.Rotation >= rotX
  t | Math.Multiply(0.7) | Math.AxisAngleY | Math.Rotation >= rotY
  t | Math.Multiply(0.9) | Math.AxisAngleZ | Math.Rotation >= rotZ
  location | Math.Translation | Math.MatMul(rotX) | Math.MatMul(rotY) | Math.MatMul(rotZ)
})

GFX.MainWindow(Contents: {  
  ; Load the built-in cube mesh
  GFX.BuiltinMesh(Type: BuiltinMeshType::Cube) >= mesh

  ; Declare transform variable
  @f3(0 0 0) | Math.Translation >= transform

  ; The queue that will contain the draw commands (just the cube)
  ; By default this queue it automatically cleared after it has been processed
  GFX.DrawQueue >= queue

  ; Define a pass that renders the cube, with the built-in color and camera transform behavior
  GFX.BuiltinFeature(BuiltinFeatureId::Transform) >> features
  GFX.BuiltinFeature(BuiltinFeatureId::BaseColor) >> features
  GFX.DrawablePass(Features: features Queue: queue) >> render-steps

  ; Setup the camera
  {Position: @f3(0 0 8) Target: @f3(0 0 0)} | Math.LookAt >= view-transform
  GFX.View(View: view-transform) >= view

  ; Rotate the cubes transform
  Animation.Timer = time
  @spin-transform(time @f3(0.0 0 0))

  ; Update and retrieve the drawable
  ; Note that the transform is the input
  GFX.Drawable(Mesh: mesh Params: {baseColor: @f4(0 1 0 1)}) >= drawable

  ; Add drawable to the queue
  drawable | GFX.Draw(queue)

  ; Render everything
  GFX.Render(View: view Steps: render-steps)
})

Image

[warning] Missing downlevel flags: DownlevelFlags(VERTEX_AND_INSTANCE_INDEX_RESPECTS_RESPECTIVE_FIRST_VALUE_IN_INDIRECT_DRAW)
The underlying API or device in use does not support enough features to be a fully compliant implementation of WebGPU. A subset of the features can still be used. If you are running this program on native and not in a browser and wish to limit the features you use to the supported subset, call Adapter::downlevel_properties or Device::downlevel_properties to get a listing of the features the current platform supports.
[warning] DownlevelCapabilities {
    flags: DownlevelFlags(
        COMPUTE_SHADERS | FRAGMENT_WRITABLE_STORAGE | INDIRECT_EXECUTION | BASE_VERTEX | READ_ONLY_DEPTH_STENCIL | NON_POWER_OF_TWO_MIPMAPPED_TEXTURES | CUBE_ARRAY_TEXTURES | COMPARISON_SAMPLERS | INDEPENDENT_BLEND | VERTEX_STORAGE | ANISOTROPIC_FILTERING | FRAGMENT_STORAGE | MULTISAMPLED_SHADING | DEPTH_TEXTURE_AND_BUFFER_COPIES | WEBGPU_TEXTURE_FORMAT_SUPPORT | BUFFER_BINDINGS_NOT_16_BYTE_ALIGNED | UNRESTRICTED_INDEX_BUFFER | FULL_DRAW_INDEX_UINT32 | DEPTH_BIAS_CLAMP | VIEW_FORMATS | UNRESTRICTED_EXTERNAL_TEXTURE_COPIES | SURFACE_VIEW_FORMATS | NONBLOCKING_QUERY_RESOLVE,
    ),
    limits: DownlevelLimits,
    shader_model: Sm5,
}
[warning] Context has 33 commandBuffers at release (0 released, 0 kept)
[warning] Context has 2 buffers at release (2 released, 2 kept)
[warning] Context has 4 textures at release (1 released, 4 kept)