daFrameGraph in Daslang

To use daFrameGraph inside Daslang you need first of all compile daFrameGraph library with DAFG_ENABLE_DAS_INTERGRATION = yes.

This will compile das module that you can import with require daFg.fg_ecs or require daFg, whether you need ECS support or not.

Daslang daFg methods are very similar to C++ methods, so usage will be the same, but with Daslang syntax instead.

daframegraph::registerNode registers node with provided name and declaration callback. Returns NodeHandle.

Declaration callback is a Daslang lambda with one argument Registry. It returns execute lambda.

Inside declaration callback you describe node using registry argument.

C++ declaration code

registry.orderMeAfter("some_node")
registry.requestRenderPass().color("rt_tex")

Will be in Daslang:

registry |> orderMeAfter("some_node")
registry |> requestRenderPass |> color([[auto "rt_tex"]])

Example:

require daFrameGraph

def register_debug_visualization_node(var handle : NodeHandle& |#)
  handle <- root() |> registerNode(debug_visualization_node_name) <| @(var registry : Registry)
    if is_forward_rendering()
      registry |> requestRenderPass |> color([[auto[] "target_after_under_water_fog"]]) |> depthRo("depth_for_transparent_effects")
    else
      registry |> orderMeAfter("tracers_node")
      registry |> orderMeBefore("transparent_scene_late_node")
      registry |> requestRenderPass |> color([[auto[] "opaque_final_target"]]) |> depthRw("depth_for_transparency")

    registry |> requestState() |> setFrameBlock("global_frame")
    return <- @ <|
      worldRenderer_renderDebug()

Type Aliases

VrsRateTexture is a variant type

some

daframegraph::VirtualResourceSemiRequest

none

void?

|typedef-daframegraph-VrsRateTexture|

VirtualAttachmentResource is a variant type

resUid

daframegraph::ResUid

name

string

|typedef-daframegraph-VirtualAttachmentResource|

TextureResolution is a variant type

res

tuple<x:uint;y:uint>

autoRes

daframegraph::AutoResolutionRequest

|typedef-daframegraph-TextureResolution|

NameSpaceRequest

NameSpaceRequest fields are

nameSpaceId

daFgCore::NameSpaceNameId

nodeId

daFgCore::NodeNameId

registry

daFgCore::InternalRegistry ?

|structure-daframegraph-NameSpaceRequest|

Registry

: NameSpaceRequest

Registry fields are

nameSpaceId

daFgCore::NameSpaceNameId

nodeId

daFgCore::NodeNameId

registry

daFgCore::InternalRegistry ?

|structure-daframegraph-Registry|

NameSpace

NameSpace fields are

nameSpaceId

daFgCore::NameSpaceNameId

|structure-daframegraph-NameSpace|

ResUid

ResUid fields are

nameId

daFgCore::ResNameId

history

bool

|structure-daframegraph-ResUid|

VirtualResourceRequestBase

VirtualResourceRequestBase fields are

registry

daFgCore::InternalRegistry ?

resUid

daframegraph::ResUid

nodeId

daFgCore::NodeNameId

|structure-daframegraph-VirtualResourceRequestBase|

VirtualResourceHandle

VirtualResourceHandle fields are

registry

daFgCore::InternalRegistry ?

resUid

daframegraph::ResUid

|structure-daframegraph-VirtualResourceHandle|

VirtualResourceCreationSemiRequest

: VirtualResourceRequestBase

VirtualResourceCreationSemiRequest fields are

registry

daFgCore::InternalRegistry ?

resUid

daframegraph::ResUid

nodeId

daFgCore::NodeNameId

|structure-daframegraph-VirtualResourceCreationSemiRequest|

VirtualResourceSemiRequest

: VirtualResourceRequestBase

VirtualResourceSemiRequest fields are

registry

daFgCore::InternalRegistry ?

resUid

daframegraph::ResUid

nodeId

daFgCore::NodeNameId

|structure-daframegraph-VirtualResourceSemiRequest|

VirtualResourceRequest

: VirtualResourceRequestBase

VirtualResourceRequest fields are

registry

daFgCore::InternalRegistry ?

resUid

daframegraph::ResUid

nodeId

daFgCore::NodeNameId

|structure-daframegraph-VirtualResourceRequest|

VirtualTextureHandle

: VirtualResourceHandle

VirtualTextureHandle fields are

registry

daFgCore::InternalRegistry ?

resUid

daframegraph::ResUid

|structure-daframegraph-VirtualTextureHandle|

VirtualBufferHandle

: VirtualResourceHandle

VirtualBufferHandle fields are

registry

daFgCore::InternalRegistry ?

resUid

daframegraph::ResUid

|structure-daframegraph-VirtualBufferHandle|

VirtualTextureRequest

: VirtualResourceRequest

VirtualTextureRequest fields are

registry

daFgCore::InternalRegistry ?

resUid

daframegraph::ResUid

nodeId

daFgCore::NodeNameId

|structure-daframegraph-VirtualTextureRequest|

VirtualBufferRequest

: VirtualResourceRequest

VirtualBufferRequest fields are

registry

daFgCore::InternalRegistry ?

resUid

daframegraph::ResUid

nodeId

daFgCore::NodeNameId

|structure-daframegraph-VirtualBufferRequest|

StateRequest

StateRequest fields are

registry

daFgCore::InternalRegistry ?

nodeId

daFgCore::NodeNameId

|structure-daframegraph-StateRequest|

VrsRequirements

VrsRequirements fields are

rateX

uint

rateY

uint

rateTexture

VrsRateTexture

vertexCombiner

daFgCore::VariableRateShadingCombiner

pixelCombiner

daFgCore::VariableRateShadingCombiner

|structure-daframegraph-VrsRequirements|

VirtualPassRequest

VirtualPassRequest fields are

registry

daFgCore::InternalRegistry ?

nodeId

daFgCore::NodeNameId

|structure-daframegraph-VirtualPassRequest|

VirtualAttachmentRequest

VirtualAttachmentRequest fields are

resource

VirtualAttachmentResource

mipLevel

uint

layer

uint

|structure-daframegraph-VirtualAttachmentRequest|

AutoResolutionRequest

AutoResolutionRequest fields are

autoResTypeId

daFgCore::AutoResTypeNameId

multiplier

float

registry

daFgCore::InternalRegistry ?

|structure-daframegraph-AutoResolutionRequest|

Texture2dCreateInfo

Texture2dCreateInfo fields are

resolution

TextureResolution

creationFlags

uint

mipLevels

uint

|structure-daframegraph-Texture2dCreateInfo|

BufferCreateInfo

BufferCreateInfo fields are

elementSize

uint

elementCount

uint

flags

uint

format

uint

|structure-daframegraph-BufferCreateInfo|

NamedSlot

NamedSlot fields are

name

string

|structure-daframegraph-NamedSlot|

Top Level Functions

root()

root returns daframegraph::NameSpace

|function-daframegraph-root|

operator /(self: NameSpace; child_name: string const)

/ returns daframegraph::NameSpace

argument

argument type

self

daframegraph::NameSpace

child_name

string const

|function-daframegraph-/|

fillSlot(self: NameSpace; slot: NamedSlot const; res_name_space: NameSpace const; res_name: string const)

argument

argument type

self

daframegraph::NameSpace

slot

daframegraph::NamedSlot const

res_name_space

daframegraph::NameSpace const

res_name

string const

|function-daframegraph-fillSlot|

registerNode(self: NameSpace; name: string const; declaration_callback: lambda<(var reg:daFrameGraph::Registry -const):lambda<void>>)

registerNode returns daFgCore::NodeHandle

argument

argument type

self

daframegraph::NameSpace

name

string const

declaration_callback

lambda<(reg: daframegraph::Registry ):lambda<>>

|function-daframegraph-registerNode|

root(self: Registry)

root returns daframegraph::NameSpaceRequest

argument

argument type

self

daframegraph::Registry

|function-daframegraph-root|

operator /(self: NameSpaceRequest; child_name: string const)

/ returns daframegraph::NameSpaceRequest

argument

argument type

self

daframegraph::NameSpaceRequest

child_name

string const

|function-daframegraph-/|

Registry Manipulation

orderMeBefore(self: Registry; name: string const)

orderMeBefore returns daframegraph::Registry

argument

argument type

self

daframegraph::Registry

name

string const

|function-daframegraph-orderMeBefore|

orderMeBefore(self: Registry; names: array<string> const)

orderMeBefore returns daframegraph::Registry

argument

argument type

self

daframegraph::Registry

names

array<string> const

|function-daframegraph-orderMeBefore|

orderMeAfter(self: Registry; name: string const)

orderMeAfter returns daframegraph::Registry

argument

argument type

self

daframegraph::Registry

name

string const

|function-daframegraph-orderMeAfter|

orderMeAfter(self: Registry; names: array<string> const)

orderMeAfter returns daframegraph::Registry

argument

argument type

self

daframegraph::Registry

names

array<string> const

|function-daframegraph-orderMeAfter|

setPriority(self: Registry; priority: int const)

setPriority returns daframegraph::Registry

argument

argument type

self

daframegraph::Registry

priority

int const

|function-daframegraph-setPriority|

multiplex(self: Registry; multiplexing_mode: MultiplexingMode const)

multiplex returns daframegraph::Registry

argument

argument type

self

daframegraph::Registry

multiplexing_mode

daFgCore::MultiplexingMode const

|function-daframegraph-multiplex|

executionHas(self: Registry; side_effect: SideEffect const)

executionHas returns daframegraph::Registry

argument

argument type

self

daframegraph::Registry

side_effect

daFgCore::SideEffect const

|function-daframegraph-executionHas|

create(self: Registry; name: string const; history: History const)

create returns daframegraph::VirtualResourceCreationSemiRequest

argument

argument type

self

daframegraph::Registry

name

string const

history

daFgCore::History const

|function-daframegraph-create|

getResolution(self: NameSpaceRequest; type_name: string const; multiplier: float const)

getResolution returns daframegraph::AutoResolutionRequest

argument

argument type

self

daframegraph::NameSpaceRequest

type_name

string const

multiplier

float const

|function-daframegraph-getResolution|

read(self: NameSpaceRequest; name: string const)

read returns daframegraph::VirtualResourceSemiRequest

argument

argument type

self

daframegraph::NameSpaceRequest

name

string const

|function-daframegraph-read|

read(self: NameSpaceRequest; slot: NamedSlot const)

read returns daframegraph::VirtualResourceSemiRequest

argument

argument type

self

daframegraph::NameSpaceRequest

slot

daframegraph::NamedSlot const

|function-daframegraph-read|

history(self: NameSpaceRequest; name: string)

history returns daframegraph::VirtualResourceSemiRequest

argument

argument type

self

daframegraph::NameSpaceRequest

name

string

|function-daframegraph-history|

modify(self: NameSpaceRequest; name: string const)

modify returns daframegraph::VirtualResourceSemiRequest

argument

argument type

self

daframegraph::NameSpaceRequest

name

string const

|function-daframegraph-modify|

modify(self: NameSpaceRequest; slot: NamedSlot const)

modify returns daframegraph::VirtualResourceSemiRequest

argument

argument type

self

daframegraph::NameSpaceRequest

slot

daframegraph::NamedSlot const

|function-daframegraph-modify|

rename(self: NameSpaceRequest; from: string const; to: string const; history: History const)

rename returns daframegraph::VirtualResourceSemiRequest

argument

argument type

self

daframegraph::NameSpaceRequest

from

string const

to

string const

history

daFgCore::History const

|function-daframegraph-rename|

get(resolution: AutoResolutionRequest const)

get returns int2

argument

argument type

resolution

daframegraph::AutoResolutionRequest const

|function-daframegraph-get|

requestState(self: Registry)

requestState returns daframegraph::StateRequest

argument

argument type

self

daframegraph::Registry

|function-daframegraph-requestState|

requestRenderPass(self: Registry)

requestRenderPass returns daframegraph::VirtualPassRequest

argument

argument type

self

daframegraph::Registry

|function-daframegraph-requestRenderPass|

Request Manipulation

texture(self: VirtualResourceCreationSemiRequest; info: Texture2dCreateInfo const)

texture returns daframegraph::VirtualTextureRequest

argument

argument type

self

daframegraph::VirtualResourceCreationSemiRequest

info

daframegraph::Texture2dCreateInfo const

|function-daframegraph-texture|

texture(self: VirtualResourceSemiRequest)

texture returns daframegraph::VirtualTextureRequest

argument

argument type

self

daframegraph::VirtualResourceSemiRequest

|function-daframegraph-texture|

buffer(self: VirtualResourceCreationSemiRequest; info: BufferCreateInfo const)

buffer returns daframegraph::VirtualBufferRequest

argument

argument type

self

daframegraph::VirtualResourceCreationSemiRequest

info

daframegraph::BufferCreateInfo const

|function-daframegraph-buffer|

buffer(self: VirtualResourceSemiRequest)

buffer returns daframegraph::VirtualBufferRequest

argument

argument type

self

daframegraph::VirtualResourceSemiRequest

|function-daframegraph-buffer|

blob(self: VirtualResourceSemiRequest)

blob returns daframegraph::VirtualResourceRequest

argument

argument type

self

daframegraph::VirtualResourceSemiRequest

|function-daframegraph-blob|

modifyRequest(self: VirtualResourceRequest; modifier: block<(var request:daFgCore::ResourceRequest -const):void> const)

argument

argument type

self

daframegraph::VirtualResourceRequest

modifier

block<(request: daFgCore::ResourceRequest ):void> const

|function-daframegraph-modifyRequest|

handle(self: VirtualTextureRequest const)

handle returns daframegraph::VirtualTextureHandle

argument

argument type

self

daframegraph::VirtualTextureRequest const

|function-daframegraph-handle|

handle(self: VirtualBufferRequest const)

handle returns daframegraph::VirtualBufferHandle

argument

argument type

self

daframegraph::VirtualBufferRequest const

|function-daframegraph-handle|

view(handle: VirtualTextureHandle const)

view returns DagorResPtr::ManagedTexView

argument

argument type

handle

daframegraph::VirtualTextureHandle const

|function-daframegraph-view|

view(handle: VirtualBufferHandle const)

view returns DagorResPtr::ManagedBufView

argument

argument type

handle

daframegraph::VirtualBufferHandle const

|function-daframegraph-view|

setFrameBlock(self: StateRequest; name: string const)

setFrameBlock returns daframegraph::StateRequest

argument

argument type

self

daframegraph::StateRequest

name

string const

|function-daframegraph-setFrameBlock|

setSceneBlock(self: StateRequest; name: string const)

setSceneBlock returns daframegraph::StateRequest

argument

argument type

self

daframegraph::StateRequest

name

string const

|function-daframegraph-setSceneBlock|

setObjectBlock(self: StateRequest; name: string const)

setObjectBlock returns daframegraph::StateRequest

argument

argument type

self

daframegraph::StateRequest

name

string const

|function-daframegraph-setObjectBlock|

allowWireFrame(self: StateRequest)

allowWireFrame returns daframegraph::StateRequest

argument

argument type

self

daframegraph::StateRequest

|function-daframegraph-allowWireFrame|

allowVrs(self: StateRequest; vrs: VrsRequirements const)

allowVrs returns daframegraph::StateRequest

argument

argument type

self

daframegraph::StateRequest

vrs

daframegraph::VrsRequirements const

|function-daframegraph-allowVrs|

enableOverride(self: StateRequest; das_override: OverrideRenderState const)

enableOverride returns daframegraph::StateRequest

argument

argument type

self

daframegraph::StateRequest

das_override

DagorDriver3D::OverrideRenderState const

|function-daframegraph-enableOverride|

color(self: VirtualPassRequest; attachments: array<daFrameGraph::VirtualAttachmentRequest> const)

color returns daframegraph::VirtualPassRequest

argument

argument type

self

daframegraph::VirtualPassRequest

attachments

array< daframegraph::VirtualAttachmentRequest > const

|function-daframegraph-color|

optional(self: auto(TT))

optional returns TT

argument

argument type

self

auto(TT)

|function-daframegraph-optional|

useAs(self: auto(TT); usageType: Usage const)

useAs returns TT

argument

argument type

self

auto(TT)

usageType

daFgCore::Usage const

|function-daframegraph-useAs|

atStage(self: auto(TT); stage: Stage const)

atStage returns TT

argument

argument type

self

auto(TT)

stage

daFgCore::Stage const

|function-daframegraph-atStage|

bindToShaderVar(self: auto(TT); name: string const)

bindToShaderVar returns TT

argument

argument type

self

auto(TT)

name

string const

|function-daframegraph-bindToShaderVar|

color(self: VirtualPassRequest; requests: VirtualTextureRequest const[])

color returns daframegraph::VirtualPassRequest

argument

argument type

self

daframegraph::VirtualPassRequest

requests

daframegraph::VirtualTextureRequest const[-1]

|function-daframegraph-color|

color(self: VirtualPassRequest; names: string const[])

color returns daframegraph::VirtualPassRequest

argument

argument type

self

daframegraph::VirtualPassRequest

names

string const[-1]

|function-daframegraph-color|

depthRw(self: VirtualPassRequest; attachment: auto const)

depthRw returns daframegraph::VirtualPassRequest

argument

argument type

self

daframegraph::VirtualPassRequest

attachment

auto const

|function-daframegraph-depthRw|

depthRo(self: VirtualPassRequest; attachment: auto const)

depthRo returns daframegraph::VirtualPassRequest

argument

argument type

self

daframegraph::VirtualPassRequest

attachment

auto const

|function-daframegraph-depthRo|