blob: d34983f89ae18d260d9327493d39cb44e8db44a7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#pragma once
#include <glm/glm.hpp>
namespace Donut
{
// Backend-agnostic scene/black-hole data shared by the Application and the
// portable renderers (SceneRenderer, BlackHoleRenderer). The rendering itself
// is written once on the RHI (rendering/rhi.h); these are just the inputs.
// A placeable/editable sphere in the world-builder scene view. The app owns
// the list; SceneRenderer draws it the same way on every backend.
struct SceneObject
{
glm::vec3 position = { 0.0f, 2.0f, 0.0f };
float radius = 2.0f;
glm::vec3 color = { 0.85f, 0.35f, 0.2f };
};
// Live-tunable black-hole / accretion-disk parameters. Radii are in
// Schwarzschild radii; the inner edge is clamped to the ISCO (3 r_s).
struct BlackHoleParams
{
float disk_inner_rs = 3.0f; // inner edge (x r_s)
float disk_outer_rs = 12.0f; // outer edge (x r_s)
float temperature = 4800.0f; // Kelvin at the flux peak (disk colour)
float brightness = 0.9f; // disk exposure
float turbulence = 0.4f; // 0 = smooth physical disk
int quality_steps = 15000; // geodesic integration steps
float fov_degrees = 60.0f; // camera field of view
};
}
|