Nebula
Loading...
Searching...
No Matches
framescriptloader.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
9//------------------------------------------------------------------------------
10#include "framescript.h"
11#include "framepass.h"
12#include "framesubpass.h"
13#include "framesubmission.h"
15#include "io/uri.h"
16#include "jzon-c/jzon.h"
17#include "coregraphics/shader.h"
18
19namespace Frame
20{
22{
23public:
24 static Ptr<FrameScript> LoadFrameScript(const IO::URI& path);
25private:
27 static void ParseFrameScript(const Ptr<Frame::FrameScript>& script, JzonValue* node);
29 static void ParseTextureList(const Ptr<Frame::FrameScript>& script, JzonValue* node);
31 static void ParseReadWriteBufferList(const Ptr<Frame::FrameScript>& script, JzonValue* node);
33 static FrameOp* ParseBlit(const Ptr<Frame::FrameScript>& script, JzonValue* node);
35 static FrameOp* ParseCopy(const Ptr<Frame::FrameScript>& script, JzonValue* node);
37 static FrameOp* ParseResolve(const Ptr<Frame::FrameScript>& script, JzonValue* node);
39 static FrameOp* ParseMipmap(const Ptr<Frame::FrameScript>& script, JzonValue* node);
41 static FrameOp* ParseCompute(const Ptr<Frame::FrameScript>& script, JzonValue* node);
43 static FrameOp* ParsePlugin(const Ptr<Frame::FrameScript>& script, JzonValue* node);
45 static FrameOp* ParseSubgraph(const Ptr<Frame::FrameScript>& script, JzonValue* node);
47 static FrameOp* ParseBarrier(const Ptr<Frame::FrameScript>& script, JzonValue* node);
49 static FrameOp* ParseSwap(const Ptr<Frame::FrameScript>& script, JzonValue* node);
51 static FrameOp* ParsePresent(const Ptr<Frame::FrameScript>& script, JzonValue* node);
52
54 static FrameOp* ParsePass(const Ptr<Frame::FrameScript>& script, JzonValue* node);
56 static void ParseSubmissionList(const Ptr<Frame::FrameScript>& script, JzonValue* node);
58 static void ParseAttachmentList(const Ptr<Frame::FrameScript>& script, CoreGraphics::PassCreateInfo& pass, Util::Array<Resources::ResourceName>& attachmentNames, JzonValue* node);
60 static void ParseSubpassDepthAttachment(Frame::FramePass* pass, CoreGraphics::Subpass& subpass, Util::Array<Resources::ResourceName>& attachmentNames, JzonValue* node);
62 static void ParseSubpassResolves(Frame::FramePass* pass, CoreGraphics::Subpass& subpass, Util::Array<Resources::ResourceName>& attachmentNames, JzonValue* node);
64 static void ParseSubpassList(const Ptr<Frame::FrameScript>& script, CoreGraphics::PassCreateInfo& pass, Frame::FramePass* framePass, Util::Array<Resources::ResourceName>& attachmentNames, JzonValue* node);
66 static void ParseSubpassDependencyList(Frame::FramePass* pass, CoreGraphics::Subpass& subpass, JzonValue* node);
68 static void ParseSubpassAttachmentList(Frame::FramePass* pass, CoreGraphics::Subpass& subpass, Util::Array<Resources::ResourceName>& attachmentNames, JzonValue* node);
70 static void ParseSubpassInputList(Frame::FramePass* pass, CoreGraphics::Subpass& subpass, Util::Array<Resources::ResourceName>& attachmentNames, JzonValue* node);
72 static void ParseSubpassPlugin(const Ptr<Frame::FrameScript>& script, Frame::FrameSubpass* subpass, JzonValue* node);
74 static void ParseSubpassSubgraph(const Ptr<Frame::FrameScript>& script, Frame::FrameSubpass* subpass, JzonValue* node);
76 static void ParseSubpassBatch(const Ptr<Frame::FrameScript>& script, Frame::FrameSubpass* subpass, JzonValue* node);
78 static void ParseSubpassSortedBatch(const Ptr<Frame::FrameScript>& script, Frame::FrameSubpass* subpass, JzonValue* node);
80 static void ParseSubpassFullscreenEffect(const Ptr<Frame::FrameScript>& script, Frame::FrameSubpass* subpass, JzonValue* node);
81
82
88 static void ParseResourceDependencies(const Ptr<Frame::FrameScript>& script, Frame::FrameOp* op, JzonValue* node);
89
91};
92} // namespace Frame2
Definition frameop.h:32
Definition framepass.h:22
Definition framescriptloader.h:22
static void ParseSubpassInputList(Frame::FramePass *pass, CoreGraphics::Subpass &subpass, Util::Array< Resources::ResourceName > &attachmentNames, JzonValue *node)
Parse subpass inputs.
Definition framescriptloader.cc:1054
static void ParseReadWriteBufferList(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse image read-write buffer list.
Definition framescriptloader.cc:204
static FrameOp * ParseSubgraph(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse subgraph.
Definition framescriptloader.cc:534
static void ParseSubpassAttachmentList(Frame::FramePass *pass, CoreGraphics::Subpass &subpass, Util::Array< Resources::ResourceName > &attachmentNames, JzonValue *node)
Parse subpass dependencies.
Definition framescriptloader.cc:963
static Frame::FrameSubmission * LastSubmission[2]
Definition framescriptloader.h:90
static FrameOp * ParseCopy(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse subpass copy.
Definition framescriptloader.cc:298
static void ParseShaderState(const Ptr< Frame::FrameScript > &script, JzonValue *node, CoreGraphics::ShaderId &shd, CoreGraphics::ResourceTableId &table, Util::Dictionary< Util::StringAtom, CoreGraphics::BufferId > &constantBuffers, Util::Array< Util::Tuple< IndexT, CoreGraphics::BufferId, CoreGraphics::TextureId > > &textures)
Helper to parse shader state.
Definition framescriptloader.cc:1237
static void ParseResourceDependencies(const Ptr< Frame::FrameScript > &script, Frame::FrameOp *op, JzonValue *node)
Helper to parse resources.
Definition framescriptloader.cc:1380
static Ptr< FrameScript > LoadFrameScript(const IO::URI &path)
Definition framescriptloader.cc:43
static void ParseSubmissionList(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse frame submission phase.
Definition framescriptloader.cc:613
static void ParseFrameScript(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Main parse function.
Definition framescriptloader.cc:97
static FrameOp * ParsePass(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse pass.
Definition framescriptloader.cc:701
static void ParseSubpassSortedBatch(const Ptr< Frame::FrameScript > &script, Frame::FrameSubpass *subpass, JzonValue *node)
Parse subpass sorted batch.
Definition framescriptloader.cc:1169
static void ParseSubpassFullscreenEffect(const Ptr< Frame::FrameScript > &script, Frame::FrameSubpass *subpass, JzonValue *node)
Parse subpass post effect.
Definition framescriptloader.cc:1199
static void ParseShaderVariables(const Ptr< Frame::FrameScript > &script, const CoreGraphics::ShaderId &shd, CoreGraphics::ResourceTableId &table, Util::Dictionary< Util::StringAtom, CoreGraphics::BufferId > &constantBuffers, Util::Array< Util::Tuple< IndexT, CoreGraphics::BufferId, CoreGraphics::TextureId > > &textures, JzonValue *node)
Helper to parse shader variables.
Definition framescriptloader.cc:1262
static FrameOp * ParseBlit(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse blit.
Definition framescriptloader.cc:233
static FrameOp * ParseCompute(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse compute.
Definition framescriptloader.cc:450
static FrameOp * ParsePlugin(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse plugin (custom code execution)
Definition framescriptloader.cc:505
static FrameOp * ParseMipmap(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse subpass copy.
Definition framescriptloader.cc:416
static FrameOp * ParsePresent(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse present.
Definition framescriptloader.cc:598
static void ParseSubpassBatch(const Ptr< Frame::FrameScript > &script, Frame::FrameSubpass *subpass, JzonValue *node)
Parse subpass batch.
Definition framescriptloader.cc:1138
static void ParseSubpassResolves(Frame::FramePass *pass, CoreGraphics::Subpass &subpass, Util::Array< Resources::ResourceName > &attachmentNames, JzonValue *node)
parse subpass dependencies
Definition framescriptloader.cc:1022
static FrameOp * ParseSwap(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse swap.
Definition framescriptloader.cc:574
static void ParseSubpassList(const Ptr< Frame::FrameScript > &script, CoreGraphics::PassCreateInfo &pass, Frame::FramePass *framePass, Util::Array< Resources::ResourceName > &attachmentNames, JzonValue *node)
Parse subpass.
Definition framescriptloader.cc:850
static void ParseTextureList(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse texture list.
Definition framescriptloader.cc:127
static void ParseSubpassPlugin(const Ptr< Frame::FrameScript > &script, Frame::FrameSubpass *subpass, JzonValue *node)
Parse subpass algorithm.
Definition framescriptloader.cc:1086
static void ParseSubpassSubgraph(const Ptr< Frame::FrameScript > &script, Frame::FrameSubpass *subpass, JzonValue *node)
Parse subpass subgraph.
Definition framescriptloader.cc:1112
static void ParseAttachmentList(const Ptr< Frame::FrameScript > &script, CoreGraphics::PassCreateInfo &pass, Util::Array< Resources::ResourceName > &attachmentNames, JzonValue *node)
Parse attachment list.
Definition framescriptloader.cc:760
static void ParseSubpassDependencyList(Frame::FramePass *pass, CoreGraphics::Subpass &subpass, JzonValue *node)
Parse subpass dependencies.
Definition framescriptloader.cc:920
static FrameOp * ParseResolve(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse resolve.
Definition framescriptloader.cc:363
static FrameOp * ParseBarrier(const Ptr< Frame::FrameScript > &script, JzonValue *node)
Parse barrier.
Definition framescriptloader.cc:551
static void ParseSubpassDepthAttachment(Frame::FramePass *pass, CoreGraphics::Subpass &subpass, Util::Array< Resources::ResourceName > &attachmentNames, JzonValue *node)
parse subpass depth attachment
Definition framescriptloader.cc:995
Definition framesubmission.h:17
Definition framesubpass.h:18
An URI object can split a Uniform Resource Identifier string into its components or build a string fr...
Definition uri.h:67
Nebula's smart pointer class which manages the life time of RefCounted objects.
Definition ptr.h:38
Nebula's dynamic array class.
Definition array.h:60
A collection of key/value pairs with quick value retrieval by key at roughly O(log n).
Definition dictionary.h:34
ImGUI debug interface for inspecting frame scripts.
Definition shaderserverbase.h:52
std::tuple< T... > Tuple
Wrap std::tuple.
Definition tupleutility.h:19
A shader represents an entire shader resource, containing several stages and programs.
Definition pass.h:78
Definition resourcetable.h:95
Definition shader.h:51
Definition pass.h:64