v2.0.0
Loading...
Searching...
No Matches
brainrenderer.h
Go to the documentation of this file.
1//=============================================================================================================
36
37#ifndef BRAINRENDERER_H
38#define BRAINRENDERER_H
39
40//=============================================================================================================
41// INCLUDES
42//=============================================================================================================
43
45
46#include "../core/rendertypes.h"
47
48#include <QMatrix4x4>
49#include <QVector3D>
50#include <memory>
51
52//=============================================================================================================
53// FORWARD DECLARATIONS
54//=============================================================================================================
55
56class QRhi;
57class QRhiCommandBuffer;
58class QRhiRenderTarget;
59class QRhiRenderPassDescriptor;
60class QRhiResourceUpdateBatch;
61class BrainSurface;
62class DipoleObject;
63class NetworkObject;
64
65//=============================================================================================================
72{
73public:
74 //=========================================================================================================
79
80 //=========================================================================================================
85
86 // ShaderMode is defined in core/rendertypes.h for lightweight inclusion.
87 // These aliases preserve backward compatibility.
89 static constexpr ShaderMode Standard = ::Standard;
92 static constexpr ShaderMode Dipole = ::Dipole;
93 static constexpr ShaderMode XRay = ::XRay;
95
104 struct SceneData {
105 QMatrix4x4 mvp;
106 QVector3D cameraPos;
107 QVector3D lightDir;
109 float overlayMode = 0.0f; // 0=Surface, 1=Annotation, 2=Scientific, 3=STC
110
111 // Viewport rectangle (floating-point, pixels)
112 float viewportX = 0, viewportY = 0, viewportW = 0, viewportH = 0;
113 // Scissor rectangle (integer, pixels)
114 int scissorX = 0, scissorY = 0, scissorW = 0, scissorH = 0;
115 };
116
117 //=========================================================================================================
126 void initialize(QRhi *rhi, QRhiRenderPassDescriptor *rp, int sampleCount);
127
128 //=========================================================================================================
135 void beginFrame(QRhiCommandBuffer *cb, QRhiRenderTarget *rt);
136
137 //=========================================================================================================
143 void updateSceneUniforms(QRhi *rhi, const SceneData &data);
144
145 //=========================================================================================================
155 void renderSurface(QRhiCommandBuffer *cb, QRhi *rhi, const SceneData &data, BrainSurface *surface, ShaderMode mode);
156
157 //=========================================================================================================
166 void renderDipoles(QRhiCommandBuffer *cb, QRhi *rhi, const SceneData &data, DipoleObject *dipoles);
167
168 //=========================================================================================================
178 void renderNetwork(QRhiCommandBuffer *cb, QRhi *rhi, const SceneData &data, NetworkObject *network);
179
180 //=========================================================================================================
186 void endFrame(QRhiCommandBuffer *cb);
187
188private:
190 struct Impl;
191 std::unique_ptr<Impl> d;
192};
193
194#endif // BRAINRENDERER_H
disp3D_rhi library export/import macros.
#define DISP3DRHISHARED_EXPORT
Lightweight render-related enums shared across the disp3D_rhi library.
Renderable cortical surface mesh with per-vertex color, curvature data, and GPU buffer management.
Renderable dipole arrow set with instanced GPU rendering for QRhi.
Renderable network visualization for QRhi.
static constexpr ShaderMode Anatomical
static constexpr ShaderMode Holographic
void renderNetwork(QRhiCommandBuffer *cb, QRhi *rhi, const SceneData &data, NetworkObject *network)
::ShaderMode ShaderMode
static constexpr ShaderMode ShowNormals
void renderSurface(QRhiCommandBuffer *cb, QRhi *rhi, const SceneData &data, BrainSurface *surface, ShaderMode mode)
void beginFrame(QRhiCommandBuffer *cb, QRhiRenderTarget *rt)
void endFrame(QRhiCommandBuffer *cb)
void updateSceneUniforms(QRhi *rhi, const SceneData &data)
static constexpr ShaderMode Dipole
void initialize(QRhi *rhi, QRhiRenderPassDescriptor *rp, int sampleCount)
static constexpr ShaderMode Standard
void renderDipoles(QRhiCommandBuffer *cb, QRhi *rhi, const SceneData &data, DipoleObject *dipoles)
static constexpr ShaderMode XRay
Aggregated GPU resources and render state for the 3-D brain visualization scene.