GraphVarying
The GraphVarying class provides a flexible runtime for executing compute shaders. It supports multiple compute shader passes with fine control over the number of groups and threads. Each pass can access any scene resources, spawn nodes, perform intersections and collisions, modify materials, and more.
#include <scene/TellusimGraphVarying.h>
Inheritance
- Inherits from Graph
Constructors
explicit GraphVarying(const char *name = nullptr)
explicit GraphVarying(Scene &scene, const char *name = nullptr)
Methods
Release resources.
void release(const Device &device)
Graph disabled flag.
void setDisabled(bool disabled)
bool isDisabled() const
Varying file name.
void setVaryingName(const char *name)
void setVaryingName(const String &name)
String getVaryingName() const
Varying source.
void setVaryingSource(const String &src)
String getVaryingSource() const
Load graph varying.
bool load(const char *name, bool reload = false)
bool load(const String &name, bool reload = false)
Create graph varying.
bool create(const String &src, bool reload = false)
Graph options.
void reserveOptions(uint32_t num_options)
uint32_t addOption(const char *name, const char *macro, const char *layout = nullptr, bool check = true)
uint32_t findOption(const String &name) const
uint32_t findOption(const char *name) const
uint32_t getNumOptions() const
String getOptionName(uint32_t index) const
String getOptionMacro(uint32_t index) const
String getOptionLayout(uint32_t index) const
String getOptionLayout(uint32_t index, const char *name) const
bool hasOptionLayout(uint32_t index, const char *name) const
Options by index.
void setOption(uint32_t index, bool value)
void setOption(uint32_t index, uint32_t value)
void setOption(uint32_t index, float32_t value)
void setOption(uint32_t index, const char *value)
void setOption(uint32_t index, const String &value)
uint32_t getOptionScalaru32(uint32_t index) const
float32_t getOptionScalarf32(uint32_t index) const
String getOptionString(uint32_t index) const
Options by name.
void setOption(const char *name, bool value)
void setOption(const char *name, uint32_t value)
void setOption(const char *name, float32_t value)
void setOption(const char *name, const char *value)
void setOption(const char *name, const String &value)
uint32_t getOptionScalaru32(const char *name) const
float32_t getOptionScalarf32(const char *name) const
String getOptionString(const char *name) const
Graph samplers.
void reserveSamplers(uint32_t num_samplers)
uint32_t addSampler(const char *name, const char *layout = nullptr, bool check = true)
uint32_t findSampler(const String &name) const
uint32_t findSampler(const char *name) const
uint32_t getNumSamplers() const
String getSamplerName(uint32_t index) const
String getSamplerLayout(uint32_t index) const
String getSamplerLayout(uint32_t index, const char *name) const
bool hasSamplerLayout(uint32_t index, const char *name) const
void setSampler(uint32_t index, Filter filter, WrapMode wrap_mode = Sampler::WrapModeRepeat)
void setSampler(uint32_t index, Sampler &sampler, bool owner = false)
Filter getSamplerFilter(uint32_t index) const
WrapMode getSamplerWrapMode(uint32_t index) const
Sampler getSampler(uint32_t index) const
void setSampler(const char *name, Filter filter, WrapMode wrap_mode = Sampler::WrapModeRepeat)
void setSampler(const char *name, Sampler &sampler, bool owner = false)
Filter getSamplerFilter(const char *name) const
WrapMode getSamplerWrapMode(const char *name) const
Sampler getSampler(const char *name) const
Graph textures.
void reserveTextures(uint32_t num_textures)
uint32_t addTexture(const char *name, const char *layout = nullptr, bool check = true)
uint32_t findTexture(const String &name) const
uint32_t findTexture(const char *name) const
uint32_t getNumTextures() const
String getTextureName(uint32_t index) const
String getTextureLayout(uint32_t index) const
String getTextureLayout(uint32_t index, const char *name) const
bool hasTextureLayout(uint32_t index, const char *name) const
void setTexture(uint32_t index, Format format, Size size)
void setTexture(uint32_t index, const char *file, bool force = false)
void setTexture(uint32_t index, Texture &texture, bool owner = false)
Format getTextureFormat(uint32_t index) const
Size getTextureSize(uint32_t index) const
String getTextureFile(uint32_t index) const
Texture getTexture(uint32_t index) const
void setTexture(const char *name, Format format, Size size)
void setTexture(const char *name, const char *file, bool force = false)
void setTexture(const char *name, Texture &texture, bool owner = false)
Format getTextureFormat(const char *name) const
Size getTextureSize(const char *name) const
String getTextureFile(const char *name) const
Texture getTexture(const char *name) const
Graph buffers.
void reserveBuffers(uint32_t num_buffers)
uint32_t addBuffer(const char *name, const char *layout = nullptr, bool check = true)
uint32_t findBuffer(const String &name) const
uint32_t findBuffer(const char *name) const
uint32_t getNumBuffers() const
String getBufferName(uint32_t index) const
String getBufferLayout(uint32_t index) const
String getBufferLayout(uint32_t index, const char *name) const
bool hasBufferLayout(uint32_t index, const char *name) const
void setBuffer(uint32_t index, size_t size)
void setBuffer(uint32_t index, Buffer &buffer, bool owner = false)
size_t getBufferSize(uint32_t index) const
Buffer getBuffer(uint32_t index) const
void setBuffer(const char *name, size_t size)
void setBuffer(const char *name, Buffer &buffer, bool owner = false)
size_t getBufferSize(const char *name) const
Buffer getBuffer(const char *name) const
Graph uniforms.
void reserveUniforms(uint32_t num_uniforms, uint32_t size)
uint32_t addUniform(const char *type, const char *name, uint32_t offset, const char *layout = nullptr, bool check = true)
uint32_t findUniform(const String &name) const
uint32_t findUniform(const char *name) const
uint32_t getNumUniforms() const
uint32_t getUniformsSize() const
String getUniformType(uint32_t index) const
String getUniformName(uint32_t index) const
uint32_t getUniformOffset(uint32_t index) const
uint32_t getUniformSize(uint32_t index) const
String getUniformLayout(uint32_t index) const
String getUniformLayout(uint32_t index, const char *name) const
bool hasUniformLayout(uint32_t index, const char *name) const
Uniforms by index.
void setUniform(uint32_t index, int32_t value)
void setUniform(uint32_t index, uint32_t value)
void setUniform(uint32_t index, float32_t value)
void setUniform(uint32_t index, Vector2f value)
void setUniform(uint32_t index, Vector3f value)
void setUniform(uint32_t index, Vector4f value)
void setUniform(uint32_t index, Matrix3x2f value)
void setUniform(uint32_t index, Matrix4x3f value)
void setUniform(uint32_t index, Matrix4x4f value)
void setUniform(uint32_t index, Color value)
int32_t getUniformScalari32(uint32_t index) const
uint32_t getUniformScalaru32(uint32_t index) const
float32_t getUniformScalarf32(uint32_t index) const
Vector2f getUniformVector2f(uint32_t index) const
Vector3f getUniformVector3f(uint32_t index) const
Vector4f getUniformVector4f(uint32_t index) const
Matrix3x2f getUniformMatrix3x2f(uint32_t index) const
Matrix4x3f getUniformMatrix4x3f(uint32_t index) const
Matrix4x4f getUniformMatrix4x4f(uint32_t index) const
Color getUniformColor(uint32_t index) const
Uniforms by name.
void setUniform(const char *name, int32_t value)
void setUniform(const char *name, uint32_t value)
void setUniform(const char *name, float32_t value)
void setUniform(const char *name, Vector2f value)
void setUniform(const char *name, Vector3f value)
void setUniform(const char *name, Vector4f value)
void setUniform(const char *name, Matrix3x2f value)
void setUniform(const char *name, Matrix4x3f value)
void setUniform(const char *name, Matrix4x4f value)
void setUniform(const char *name, Color value)
int32_t getUniformScalari32(const char *name) const
uint32_t getUniformScalaru32(const char *name) const
float32_t getUniformScalarf32(const char *name) const
Vector2f getUniformVector2f(const char *name) const
Vector3f getUniformVector3f(const char *name) const
Vector4f getUniformVector4f(const char *name) const
Matrix3x2f getUniformMatrix3x2f(const char *name) const
Matrix4x3f getUniformMatrix4x3f(const char *name) const
Matrix4x4f getUniformMatrix4x4f(const char *name) const
Color getUniformColor(const char *name) const
Graph passes.
void reservePasses(uint32_t num_passes)
uint32_t addPass(Pass pass, const char *name, const char *layout = nullptr)
uint32_t findPass(const String &name) const
uint32_t findPass(const char *name) const
uint32_t getNumPasses() const
Pass getPassType(uint32_t index) const
String getPassName(uint32_t index) const
String getPassLayout(uint32_t index) const
String getPassLayout(uint32_t index, const char *name) const
bool hasPassLayout(uint32_t index, const char *name) const
Enable source.
void setEnableSource(uint32_t index, const String &src)
String getEnableSource(uint32_t index) const
Layout shader source.
void setLayoutSource(uint32_t index, const String &src)
String getLayoutSource(uint32_t index) const
Global shader source.
void setGlobalSource(uint32_t index, const String &src)
String getGlobalSource(uint32_t index) const
Compute shader source.
void setComputeSource(uint32_t index, const String &src)
String getComputeSource(uint32_t index) const
Create kernel callback.
void setCreateCallback(uint32_t index, const CreateCallback &func)
CreateCallback getCreateCallback(uint32_t index) const
Bind kernel callback.
void setBindCallback(uint32_t index, const BindCallback &func)
BindCallback getBindCallback(uint32_t index) const
Types
using CreateCallback = Function<bool(const Device device, Kernel kernel)>
using BindCallback = Function<bool(Compute compute, Kernel kernel)>
Enums
Pass
Varying passes.
Name | Value | Description |
---|---|---|
PassUnknown | 0 | |
PassInit | 1 | Init kernel pass. |
PassUpdate | 2 | Update kernel pass. |
PassScan | 3 | Prefix scan pass. |
PassSort | 4 | Radix sort pass. |
PassTree | 5 | Spatial tree pass. |
PassGrid | 6 | Spatial grid pass. |
PassFFT | 7 | Fourier transform pass. |
NumPasses | 8 |