1 /*********************************************************
2  /                   MANDELBULBER
3  / definition of structures for image and effect
4  / parameters
5  /
6  / author: Krzysztof Marczak
7  / contact: buddhi1980@gmail.com
8  / licence: GNU GPL v3.0
9  /
10  ********************************************************/
11 
12 #ifndef FRACTPARAMS_H_
13 #define FRACTPARAMS_H_
14 
15 #include "fractal.h"
16 #ifndef MANDELBULBER_EMBEDDED
17 #include "texture.hpp"
18 #endif
19 
20 struct sParamRenderD
21 {
22 	double zoom; //zoom
23 	double DE_factor; //factor for distance estimation steps
24 	double resolution; //resolution of image in fractal coordinates
25 	double persp; //perspective factor
26 	double quality; //DE threshold factor
27 	double smoothness;
28 	double alpha; //rotation of fractal
29 	double beta; //
30 	double gamma;
31 	double DOFFocus;
32 	double DOFRadius;
33 	double mainLightAlpha;
34 	double mainLightBeta;
35 	double auxLightIntensity;
36 	double auxLightMaxDist;
37 	double auxLightDistributionRadius;
38 	double auxLightVisibility;
39 	double auxLightPreIntensity[4];
40 	double stereoEyeDistance;
41 	double viewDistanceMin;
42 	double viewDistanceMax;
43 	double volumetricLightIntensity[5];
44 	double fogDensity;
45 	double fogColour1Distance;
46 	double fogColour2Distance;
47 	double fogDistanceFactor;
48 	double colourSaturation;
49 	double fastAoTune;
50 	double iterFogOpacity;
51 	double iterFogOpacityTrim;
52 	double fakeLightsIntensity;
53 	double fakeLightsVisibility;
54 	double fakeLightsVisibilitySize;
55 	double shadowConeAngle;
56 	double primitivePlaneReflect;
57 	double primitiveBoxReflect;
58 	double primitiveInvertedBoxReflect;
59 	double primitiveSphereReflect;
60 	double primitiveInvertedSphereReflect;
61 	double primitiveWaterReflect;
62 
63 #ifndef MANDELBULBER_EMBEDDED
64 	sImageAdjustments imageAdjustments;
65 #endif
66 
67 	CVector3 vp; //view point
68 	CVector3 auxLightPre[4];
69 	CVector3 auxLightRandomCenter;
70 };
71 
72 struct sParamRender
73 {
74 	sParamRenderD doubles;
75 
76 	sFractal fractal;
77 	int image_width; //image width
78 	int image_height; //image height
79 	int globalIlumQuality; //ambient occlusion quality
80 	int reflectionsMax;
81 	int coloring_seed; //colouring random seed
82 	int auxLightRandomSeed;
83 	int auxLightNumber;
84 	int SSAOQuality;
85 	int startFrame;
86 	int endFrame;
87 	int framesPerKeyframe;
88 	int imageFormat;
89 	int noOfTiles;
90 	int tileCount;
91 
92 	int OpenCLEngine;
93 	int OpenCLPixelsPerJob;
94 	int OpenCLDOFMethod;
95 
96 	enumPerspectiveType perspectiveType;
97 
98 	bool shadow; //enable shadows
99 	bool global_ilumination; //enable global ilumination
100 	bool fastGlobalIllumination; //enable fake global ilumination
101 	bool slowShading; //enable fake gradient calculation for shading
102 	bool texturedBackground; //enable testured background
103 	bool background_as_fulldome;
104 	bool recordMode; //path recording mode
105 	bool continueRecord; //continue recording mode
106 	bool playMode; //play mode
107 	bool animMode; //animation mode
108 	bool SSAOEnabled;
109 	bool DOFEnabled;
110 	bool auxLightPreEnabled[4];
111 	bool volumetricLightEnabled[5];
112 	bool penetratingLights;
113 	bool stereoEnabled;
114 	bool quiet;
115 	bool fishEyeCut;
116 	bool fakeLightsEnabled;
117 #ifndef MANDELBULBER_EMBEDDED
118 	sImageSwitches imageSwitches;
119 
120 	sRGB background_color1; //background colour
121 	sRGB background_color2;
122 	sRGB background_color3;
123 	sRGB auxLightPreColour[4];
124 	sRGB fogColour1;
125 	sRGB fogColour2;
126 	sRGB fogColour3;
127 	sRGB primitivePlaneColour;
128 	sRGB primitiveBoxColour;
129 	sRGB primitiveInvertedBoxColour;
130 	sRGB primitiveSphereColour;
131 	sRGB primitiveInvertedSphereColour;
132 	sRGB primitiveWaterColour;
133 	sEffectColours effectColours;
134 
135 	sRGB palette[256];
136 
137 	char file_destination[1000];
138 	char file_envmap[1000];
139 	char file_background[1000];
140 	char file_lightmap[1000];
141 	char file_path[1000];
142 	char file_keyframes[1000];
143 
144 	cTexture *backgroundTexture;
145 	cTexture *envmapTexture;
146 	cTexture *lightmapTexture;
147 #endif
148 	std::vector<enumFractalFormula> formulaSequence;
149 	std::vector<double> hybridPowerSequence;
150 
151 	double settingsVersion;
152 };
153 
154 #endif /* FRACTPARAMS_H_ */
155