VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
compute.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2025-2026 Arnis Lektauers
3//
4// Created by Arnis Lektauers on 19.10.2025.
5//
6#pragma once
7
8#include <cstdint>
9#include <memory>
10#include <string>
11#include <unordered_map>
12
13namespace visutwin::canvas
14{
15 class GraphicsDevice;
16 class Shader;
17 class Texture;
18
23 class Compute
24 {
25 public:
26 Compute(GraphicsDevice* graphicsDevice, const std::shared_ptr<Shader>& shader, std::string name = "");
27
28 const std::shared_ptr<Shader>& shader() const { return _shader; }
29 GraphicsDevice* graphicsDevice() const { return _graphicsDevice; }
30 const std::string& name() const { return _name; }
31
32 void setParameter(const std::string& name, Texture* texture);
33 Texture* getTextureParameter(const std::string& name) const;
34 const std::unordered_map<std::string, Texture*>& textureParameters() const { return _textureParameters; }
35
36 // Matches upstream setupDispatch() semantics: workgroup group counts.
37 void setupDispatch(uint32_t x, uint32_t y, uint32_t z);
38 uint32_t dispatchX() const { return _dispatchX; }
39 uint32_t dispatchY() const { return _dispatchY; }
40 uint32_t dispatchZ() const { return _dispatchZ; }
41
42 private:
43 GraphicsDevice* _graphicsDevice = nullptr;
44 std::shared_ptr<Shader> _shader = nullptr;
45 std::string _name;
46 std::unordered_map<std::string, Texture*> _textureParameters;
47 uint32_t _dispatchX = 1u;
48 uint32_t _dispatchY = 1u;
49 uint32_t _dispatchZ = 1u;
50 };
51}
void setupDispatch(uint32_t x, uint32_t y, uint32_t z)
Definition compute.cpp:30
const std::shared_ptr< Shader > & shader() const
Definition compute.h:28
uint32_t dispatchX() const
Definition compute.h:38
GraphicsDevice * graphicsDevice() const
Definition compute.h:29
Compute(GraphicsDevice *graphicsDevice, const std::shared_ptr< Shader > &shader, std::string name="")
Definition compute.cpp:14
void setParameter(const std::string &name, Texture *texture)
Definition compute.cpp:19
const std::unordered_map< std::string, Texture * > & textureParameters() const
Definition compute.h:34
uint32_t dispatchY() const
Definition compute.h:39
Texture * getTextureParameter(const std::string &name) const
Definition compute.cpp:24
uint32_t dispatchZ() const
Definition compute.h:40
const std::string & name() const
Definition compute.h:30
Abstract GPU interface for resource creation, state management, and draw submission.
GPU texture resource supporting 2D, cubemap, volume, and array formats with mipmap management.
Definition texture.h:57