Cogs.Core
EffectsVK.h
1#pragma once
2
3#include "../IEffects.h"
4
5#include <memory>
6
7#include "CommonVK.h"
8
9#include "../Base/EffectsCommon.h"
10
11namespace Cogs
12{
13 struct EffectVK : public Effect
14 {
15 VkPipelineLayout pipelineLayout;
16
17 std::vector<VkDescriptorSetLayout> descriptorSetLayouts;
18 };
19
20 class EffectsVK : public EffectsCommon
21 {
22 public:
23 void initialize(class GraphicsDeviceVK * graphicsDevice);
24
26 EffectHandle loadComputeEffect(const StringView & fileName, const PreprocessorDefinitions & definitions, EffectFlags::EEffectFlags effectFlags = EffectFlags::None) override;
27
28 void releaseEffect(EffectHandle effectHandle) override;
29
30 void releaseResources() override;
31
32 EffectHandle load(const ProcessedContent & vsSource,
33 const ProcessedContent & hsSource,
34 const ProcessedContent & dsSource,
35 const ProcessedContent & gsSource,
36 const ProcessedContent & psSource,
37 const StringView & vsEntryPoint,
38 const StringView & hsEntryPoint,
39 const StringView & dsEntryPoint,
40 const StringView & gsEntryPoint,
41 const StringView & psEntryPoint,
42 const EffectDescription & desc) final;
43
44 bool initializeEffectLayout(EffectVK & effect);
45
46 class GraphicsDeviceVK * graphicsDevice;
47
49 };
50}
EffectHandle loadComputeEffect(const StringView &fileName, EffectFlags::EEffectFlags effectFlags=EffectFlags::None) override
Load the compute shader with the given file name and create an effect.
Definition: EffectsVK.cpp:40
void releaseEffect(EffectHandle effectHandle) override
Release the effect with the given handle, freeing all resources generated during program loading.
Definition: EffectsVK.cpp:50
void releaseResources() override
Release all allocated effect resources.
Definition: EffectsVK.cpp:54
Provides a weakly referenced view over the contents of a string.
Definition: StringView.h:24
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
std::vector< PreprocessorDefinition > PreprocessorDefinitions
A set of preprocessor definitions.
Definition: IEffects.h:13
Contains an effect description used to load a single effect.
Definition: IEffects.h:55
EEffectFlags
Effect source flags.
Definition: IEffects.h:20