Tissue Forge C++ 0.2.1
Interactive, particle-based physics, chemistry and biology modeling and simulation environment
Loading...
Searching...
No Matches
tfBondRenderer3D.h
1/*******************************************************************************
2 * This file is part of Tissue Forge.
3 * Copyright (c) 2022-2024 T.J. Sego
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published
7 * by the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 ******************************************************************************/
19
20#ifndef _SOURCE_RENDERING_TFBONDRENDERER3D_H_
21#define _SOURCE_RENDERING_TFBONDRENDERER3D_H_
22
23#include "tfSubRenderer.h"
24
25#include <shaders/tfPhong.h>
26#include "tfStyle.h"
27
28#include <Magnum/GL/Mesh.h>
29#include <Magnum/Mesh.h>
30#include <Magnum/Math/Color.h>
31
32
33namespace TissueForge::rendering {
34
35
37 Magnum::Matrix4 transformationMatrix;
38 Magnum::Matrix3 normalMatrix;
39 Magnum::Color4 color;
40 };
41
43 HRESULT start(const std::vector<fVector4> &clipPlanes) override;
44 HRESULT draw(ArcBallCamera *camera, const iVector2 &viewportSize, const fMatrix4 &modelViewMat) override;
45 const unsigned addClipPlaneEquation(const Magnum::Vector4& pe) override;
46 const unsigned removeClipPlaneEquation(const unsigned int &id) override;
47 void setClipPlaneEquation(unsigned id, const Magnum::Vector4& pe) override;
48
49 private:
50
51 int _detail = 10;
52 float _radius = -0.1;
53 std::vector<Magnum::Vector4> _clipPlanes;
54
55 shaders::Phong _shader{Corrade::Containers::NoCreate};
56 Magnum::GL::Buffer _buffer{Corrade::Containers::NoCreate};
57 Magnum::GL::Mesh _mesh{Corrade::Containers::NoCreate};
58 };
59
60 void render_bond3d(
61 rendering::Bond3DInstanceData* bondData,
62 const int &idx,
63 const fVector3 &pipos,
64 const fVector3 &pjpos,
65 const fVector4 &color,
66 const float &radius
67 );
68
69}
70
71#endif // _SOURCE_RENDERING_TFBONDRENDERER3D_H_
Definition tfArcBallCamera.h:66
Definition tfPhong.h:59
Tissue Forge rendering and visualization.
Definition tfAngle.h:38
Definition tfBondRenderer3D.h:36
Definition tfBondRenderer3D.h:42
const unsigned removeClipPlaneEquation(const unsigned int &id) override
Removes a clip plane equation.
HRESULT draw(ArcBallCamera *camera, const iVector2 &viewportSize, const fMatrix4 &modelViewMat) override
Updates visualization.
void setClipPlaneEquation(unsigned id, const Magnum::Vector4 &pe) override
Sets a clip plane equation.
const unsigned addClipPlaneEquation(const Magnum::Vector4 &pe) override
Adds a clip plane equation.
HRESULT start(const std::vector< fVector4 > &clipPlanes) override
Starts the renderer.
Definition tfSubRenderer.h:34
int32_t HRESULT
Definition tf_port.h:255