Cogs.Core
RenderStateUpdater.h
1#pragma once
2
3#include "Rendering/IContext.h"
4#include "Rendering/IBuffers.h"
5#include "Rendering/ITextures.h"
6
7#include "Renderer/ParameterBuffers.h"
8#include "Renderer/Renderer.h"
9#include "Renderer/RenderTexture.h"
10#include "Renderer/RenderMaterialInstance.h"
11#include "Renderer/RenderResources.h"
12
13namespace Cogs::Core
14{
15 struct RenderItem;
16 struct RenderTaskContext;
17 struct ListObjectBuffer;
18 struct RenderListTask;
19
21 {
22 Context* context = nullptr;
23 Renderer* renderer = nullptr;
24 IGraphicsDevice* device = nullptr;
25 IContext* deviceContext = nullptr;
26 const CameraData* cameraData = nullptr;
27 EnginePermutation* permutation = nullptr;
28 size_t permutationIndex = 0;
29 EngineBuffers* engineBuffers = nullptr;
30 RenderTarget* renderTarget = nullptr;
31 RenderTaskContext* taskContext = nullptr;
32 RenderListTask* task = nullptr;
33 ListObjectBuffer* listObjectBuffer = nullptr;
34 ClipShapeCache* clipShapeCache = nullptr;
35 };
36
37 void applyMaterialProperties(const DrawContext * drawContext,
38 const Material * material,
39 const ConstantBufferBindingHandle & bufferBinding,
40 const BufferHandle & constantBuffer);
41
42 COGSCORE_DLL_API void updateSceneBindings(const DrawContext * drawContext, const CameraData * cameraData, const EffectBinding * bindings);
43 COGSCORE_DLL_API void updateSceneBindings(const RenderTaskContext * taskContext, const EffectBinding * bindings);
44 COGSCORE_DLL_API void updateEnvironmentBindings(const DrawContext * drawContext, const EffectBinding * bindings);
45 COGSCORE_DLL_API void updateMaterialBindings(const DrawContext * drawContext, const RenderMaterialInstance * renderMaterialInstance, const EffectBinding * bindings, bool perInstance);
46
47 COGSCORE_DLL_API void applyMaterialPermutation(RenderTaskContext * taskContext, const DrawContext * drawContext, const EffectBinding * bindings, const RenderMaterialInstance * renderMaterialInstance);
48 COGSCORE_DLL_API void applyMaterialInstance(const DrawContext * drawContext, const EffectBinding * bindings, const RenderMaterialInstance * renderMaterialInstance);
49 COGSCORE_DLL_API void applyMaterialPerObject(const DrawContext * drawContext, const RenderMaterialInstance * renderMaterialInstance, const RenderItem & renderItem);
50
51 size_t populateObjectBuffer(const DrawContext * drawContext, const RenderItem* items, size_t o, size_t n);
52 void applyMaterialPerObjectBatched(const DrawContext * drawContext, const RenderMaterialInstance * renderMaterialInstance, const RenderItem & renderItem, size_t o);
53}
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Definition: Context.h:83
Core renderer system.
Definition: Renderer.h:28
Represents a graphics device used to manage graphics resources and issue drawing commands.
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....
Contains data describing a Camera instance and its derived data structured such as matrix data and vi...
Definition: CameraSystem.h:67
Material resources define the how of geometry rendering (the what is defined by Mesh and Texture reso...
Definition: Material.h:82
Represents a graphics device context which can receive rendering commands.
Definition: IContext.h:43