/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/EditorPlugins/Scene/EnginePluginScene/Grid/GridRenderer.h
81 строка
3 KB
C-Core
Custom Render Hooks (#1801)
30 янв 2026, 19:53
Не верифицирован
30 янв 2026, 19:53
705e880
Код
Авторство
О чём код?
#pragma once #include <Core/ResourceManager/ResourceHandle.h> #include <RendererCore/Meshes/MeshBufferResource.h> #include <RendererCore/Pipeline/Extractor.h> #include <RendererCore/Pipeline/RenderData.h> #include <RendererCore/Pipeline/Renderer.h> #include <RendererFoundation/Resources/BufferPool.h> class ezRenderDataBatch; class ezSceneContext; using ezShaderResourceHandle = ezTypedResourceHandle<class ezShaderResource>; class ezGridRenderData : public ezRenderData { EZ_ADD_DYNAMIC_REFLECTION(ezGridRenderData, ezRenderData); public: ezQuat m_qGlobalRotation; float m_fDensity; ezInt32 m_iFirstLine1; ezInt32 m_iLastLine1; ezInt32 m_iFirstLine2; ezInt32 m_iLastLine2; bool m_bOrthoMode; bool m_bGlobal; }; class ezEditorGridExtractor : public ezExtractor { EZ_ADD_DYNAMIC_REFLECTION(ezEditorGridExtractor, ezExtractor); public: ezEditorGridExtractor(const char* szName = "EditorGridExtractor"); virtual void Extract(const ezView& view, const ezDynamicArray<const ezGameObject*>& visibleObjects, ezExtractedRenderData& ref_extractedRenderData) override; virtual void PostSortAndBatch(const ezView& view, const ezDynamicArray<const ezGameObject*>& visibleObjects, ezExtractedRenderData& ref_extractedRenderData) override {} virtual ezResult Serialize(ezStreamWriter& inout_stream) const override; virtual ezResult Deserialize(ezStreamReader& inout_stream) override; void SetSceneContext(ezSceneContext* pSceneContext) { m_pSceneContext = pSceneContext; } ezSceneContext* GetSceneContext() const { return m_pSceneContext; } private: ezSceneContext* m_pSceneContext; }; struct alignas(16) GridVertex { ezVec3 m_position; ezColorLinearUB m_color; }; class ezGridRenderer : public ezRenderer { EZ_ADD_DYNAMIC_REFLECTION(ezGridRenderer, ezRenderer); EZ_DISALLOW_COPY_AND_ASSIGN(ezGridRenderer); public: ezGridRenderer(); // ezRenderer implementation virtual void GetSupportedRenderDataTypes(ezDynamicArray<const ezRTTI*>& out_types) const override; virtual void RenderBatch(const ezRenderViewContext& renderContext, const ezRenderPipelinePass* pPass, const ezRenderDataBatch& batch) const override; protected: void CreateVertexBuffer(); static constexpr ezUInt32 s_uiBufferSize = 1024 * 8; static constexpr ezUInt32 s_uiLineVerticesPerBatch = s_uiBufferSize / sizeof(GridVertex); ezShaderResourceHandle m_hShader; ezGALBufferPool m_VertexBuffer; ezSmallArray<ezGALVertexAttribute, 2> m_VertexAttributes; mutable ezDynamicArray<GridVertex, ezAlignedAllocatorWrapper> m_Vertices; private: void CreateGrid(const ezGridRenderData& rd) const; };