Pioneer
Loading...
Searching...
No Matches
GasGiant.h
Go to the documentation of this file.
1// Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#ifndef _GASGIANT_H
5#define _GASGIANT_H
6
7#include "BaseSphere.h"
8#include "GasGiantJobs.h"
9#include "JobQueue.h"
10#include "vector3.h"
11
12#include <deque>
13
14namespace Graphics {
15 class Renderer;
16 class RenderTarget;
17 class Texture;
18} // namespace Graphics
19
20class SystemBody;
21class GasGiant;
22class GasPatch;
23class GasPatchContext;
24class Camera;
25
26namespace {
27 class STextureFaceResult;
28 class SGPUGenResult;
29} // namespace
30
31#define NUM_PATCHES 6
32
33class GasGiant : public BaseSphere {
34public:
35 GasGiant(const SystemBody *body);
36 virtual ~GasGiant();
37
38 virtual void Update() override;
39 virtual void Render(Graphics::Renderer *renderer, const matrix4x4d &modelView, vector3d campos, const float radius, const std::vector<Camera::Shadow> &shadows) override;
40
41 virtual double GetHeight(const vector3d &p) const override final { return 0.0; }
42
43 // in sbody radii
44 virtual double GetMaxFeatureHeight() const override { return 0.0; }
45
46 virtual void Reset() override;
47
49 static bool OnAddGPUGenResult(const SystemPath &path, GasGiantJobs::SGPUGenResult *res);
50 static void Init();
51 static void Uninit();
52 static void UpdateAllGasGiants();
53 static void OnChangeDetailLevel();
54
55 static void CreateRenderTarget(const Uint16 width, const Uint16 height);
56 static void SetRenderTargetCubemap(const Uint32, Graphics::Texture *, const bool unBind = true);
57 static void BeginRenderTarget();
58 static void EndRenderTarget();
59
60private:
61 void BuildFirstPatches();
62 void GenerateTexture();
63 bool AddTextureFaceResult(GasGiantJobs::STextureFaceResult *res);
64 bool AddGPUGenResult(GasGiantJobs::SGPUGenResult *res);
65
66 static RefCountedPtr<GasPatchContext> s_patchContext;
67
68 static Graphics::RenderTarget *s_renderTarget;
69
70 std::unique_ptr<GasPatch> m_patches[NUM_PATCHES];
71
72 bool m_hasTempCampos;
73 vector3d m_tempCampos;
74
75 virtual void SetUpMaterials() override;
76 RefCountedPtr<Graphics::Texture> m_surfaceTextureSmall;
77 RefCountedPtr<Graphics::Texture> m_surfaceTexture;
79
80 std::unique_ptr<Color[]> m_jobColorBuffers[NUM_PATCHES];
82 bool m_hasJobRequest[NUM_PATCHES];
83
84 Job::Handle m_gpuJob;
85 bool m_hasGpuJobRequest;
86
87 float m_timeDelay;
88};
89
90#endif /* _GASGIANT_H */
#define NUM_PATCHES
Definition GasGiant.h:31
Definition BaseSphere.h:21
Definition Camera.h:80
Definition GasGiantJobs.h:193
Definition GasGiantJobs.h:82
Definition GasGiant.h:33
static void CreateRenderTarget(const Uint16 width, const Uint16 height)
Definition GasGiant.cpp:806
virtual ~GasGiant()
Definition GasGiant.cpp:323
virtual double GetHeight(const vector3d &p) const override final
Definition GasGiant.h:41
static void EndRenderTarget()
Definition GasGiant.cpp:842
static void Init()
Definition GasGiant.cpp:777
virtual void Reset() override
Definition GasGiant.cpp:330
static void UpdateAllGasGiants()
Definition GasGiant.cpp:276
static void SetRenderTargetCubemap(const Uint32, Graphics::Texture *, const bool unBind=true)
Definition GasGiant.cpp:830
static bool OnAddGPUGenResult(const SystemPath &path, GasGiantJobs::SGPUGenResult *res)
Definition GasGiant.cpp:371
static bool OnAddTextureFaceResult(const SystemPath &path, GasGiantJobs::STextureFaceResult *res)
Definition GasGiant.cpp:353
virtual double GetMaxFeatureHeight() const override
Definition GasGiant.h:44
virtual void Update() override
Definition GasGiant.cpp:637
virtual void Render(Graphics::Renderer *renderer, const matrix4x4d &modelView, vector3d campos, const float radius, const std::vector< Camera::Shadow > &shadows) override
Definition GasGiant.cpp:654
static void OnChangeDetailLevel()
Definition GasGiant.cpp:285
static void Uninit()
Definition GasGiant.cpp:800
static void BeginRenderTarget()
Definition GasGiant.cpp:836
Definition GasGiant.cpp:86
Definition GasGiant.cpp:194
Definition RenderTarget.h:38
Definition Renderer.h:44
Definition Texture.h:106
Definition JobQueue.h:39
Definition RefCounted.h:36
Definition SystemBody.h:19
Definition SystemPath.h:13
Definition Background.h:14