diff --git a/src/basics/basics_global.h b/src/basics/basics_global.h index 81b7fc8..0166285 100644 --- a/src/basics/basics_global.h +++ b/src/basics/basics_global.h @@ -14,6 +14,7 @@ namespace paysages { namespace basics { class Vector3; class SpaceSegment; + class NoiseGenerator; } } using namespace paysages::basics; diff --git a/src/definition/definition_global.h b/src/definition/definition_global.h index da4e843..e9b7bde 100644 --- a/src/definition/definition_global.h +++ b/src/definition/definition_global.h @@ -1,7 +1,6 @@ #ifndef DEFINITION_GLOBAL_H #define DEFINITION_GLOBAL_H -/* Shared object helpers */ #include #if defined(DEFINITION_LIBRARY) # define DEFINITIONSHARED_EXPORT Q_DECL_EXPORT @@ -9,15 +8,12 @@ # define DEFINITIONSHARED_EXPORT Q_DECL_IMPORT #endif -/* Namespace using */ +#include "basics_global.h" + namespace paysages { - namespace system {} - namespace basics {} namespace definition {} } -using namespace paysages::system; -using namespace paysages::basics; using namespace paysages::definition; #endif // DEFINITION_GLOBAL_H diff --git a/src/editing/baseform.h b/src/editing/baseform.h index fd55ba2..8a99fae 100644 --- a/src/editing/baseform.h +++ b/src/editing/baseform.h @@ -6,10 +6,10 @@ #include "basepreview.h" #include "baseinput.h" #include "dialoglayers.h" -#include "rendering/shared/types.h" -#include "rendering/tools/curve.h" -#include "rendering/tools/color.h" -#include "rendering/tools/lighting.h" +#include "shared/types.h" +#include "tools/curve.h" +#include "tools/color.h" +#include "tools/lighting.h" class QPushButton; class QComboBox; diff --git a/src/editing/basepreview.h b/src/editing/basepreview.h index 74cf716..fd73204 100644 --- a/src/editing/basepreview.h +++ b/src/editing/basepreview.h @@ -11,10 +11,10 @@ #include #include -#include "editing/previewosd.h" -#include "editing/common/DrawingWidget.h" -#include "editing/common/previewrenderer.h" -#include "rendering/tools/color.h" +#include "previewosd.h" +#include "common/DrawingWidget.h" +#include "common/previewrenderer.h" +#include "tools/color.h" namespace paysages { namespace system { diff --git a/src/editing/common/freeformhelper.cpp b/src/editing/common/freeformhelper.cpp index 14a9733..49b838f 100644 --- a/src/editing/common/freeformhelper.cpp +++ b/src/editing/common/freeformhelper.cpp @@ -12,7 +12,7 @@ #include "dialogrender.h" #include "dialogexplorer.h" #include "Scenery.h" -#include "rendering/renderer.h" +#include "renderer.h" #include "tools.h" Q_DECLARE_METATYPE(double*) diff --git a/src/editing/common/mainwindow.cpp b/src/editing/common/mainwindow.cpp index 9e12991..39f25ff 100644 --- a/src/editing/common/mainwindow.cpp +++ b/src/editing/common/mainwindow.cpp @@ -23,7 +23,7 @@ #include "dialogrender.h" #include "dialogexplorer.h" -#include "rendering/main.h" +#include "main.h" #include "Scenery.h" #include "PackStream.h" #include "tools.h" diff --git a/src/editing/common/previewrenderer.cpp b/src/editing/common/previewrenderer.cpp index 3937c7e..18d98cb 100644 --- a/src/editing/common/previewrenderer.cpp +++ b/src/editing/common/previewrenderer.cpp @@ -1,17 +1,16 @@ #include "previewrenderer.h" -PreviewRenderer::PreviewRenderer(QObject *parent) : - QObject(parent) +#include "SoftwareRenderer.h" + +PreviewRenderer::PreviewRenderer() { - renderer = rendererCreate(); } PreviewRenderer::~PreviewRenderer() { - rendererDelete(renderer); } -Color PreviewRenderer::getColor2D(double, double, double) +Color PreviewRenderer::getColor2D(double, double, double) const { return COLOR_BLACK; } @@ -22,4 +21,5 @@ void PreviewRenderer::bindEvent(BasePreview*) void PreviewRenderer::updateEvent() { + renderer->prepare(); } diff --git a/src/editing/common/previewrenderer.h b/src/editing/common/previewrenderer.h index 00e4dce..1d0cf06 100644 --- a/src/editing/common/previewrenderer.h +++ b/src/editing/common/previewrenderer.h @@ -1,30 +1,22 @@ #ifndef PREVIEWRENDERER_H #define PREVIEWRENDERER_H -#include -#include "rendering/tools/color.h" -#include "rendering/renderer.h" +#include "rendering_global.h" + +#include "Base2dPreviewRenderer.h" +#include "renderer.h" class BasePreview; -class PreviewRenderer : public QObject +class PreviewRenderer : public Base2dPreviewRenderer { - Q_OBJECT - public: - explicit PreviewRenderer(QObject *parent = 0); - ~PreviewRenderer(); + PreviewRenderer(); + virtual ~PreviewRenderer(); virtual void bindEvent(BasePreview* preview); virtual void updateEvent(); - virtual Color getColor2D(double x, double y, double scaling); - -signals: - -public slots: - -protected: - Renderer* renderer; + virtual Color getColor2D(double x, double y, double scaling) const override; }; #endif // PREVIEWRENDERER_H diff --git a/src/editing/dialogcolorgradation.h b/src/editing/dialogcolorgradation.h index 559fc3e..b8f9b45 100644 --- a/src/editing/dialogcolorgradation.h +++ b/src/editing/dialogcolorgradation.h @@ -2,12 +2,13 @@ #define _PAYSAGES_QT_DIALOGCOLORGRADATION_H_ #include -#include #include "widgetcurveeditor.h" #include "previewcolorgradation.h" -#include "rendering/tools/color.h" -#include "rendering/tools/curve.h" +#include "tools/color.h" +#include "tools/curve.h" + +class QPushButton; class DialogColorGradation : public QDialog { diff --git a/src/editing/dialogcurve.h b/src/editing/dialogcurve.h index 67d77ae..0d2ed60 100644 --- a/src/editing/dialogcurve.h +++ b/src/editing/dialogcurve.h @@ -5,7 +5,7 @@ #include #include "widgetcurveeditor.h" -#include "rendering/tools/curve.h" +#include "tools/curve.h" class DialogCurve : public QDialog { diff --git a/src/editing/dialogexplorer.cpp b/src/editing/dialogexplorer.cpp index f049751..28cc71a 100644 --- a/src/editing/dialogexplorer.cpp +++ b/src/editing/dialogexplorer.cpp @@ -5,8 +5,8 @@ #include #include #include "WidgetExplorer.h" -#include "rendering/camera.h" -#include "rendering/renderer.h" +#include "camera.h" +#include "renderer.h" DialogExplorer::DialogExplorer(QWidget* parent, CameraDefinition* camera, bool camera_validable, Renderer* renderer) : QDialog(parent) { diff --git a/src/editing/dialogexplorer.h b/src/editing/dialogexplorer.h index d042fdf..927958d 100644 --- a/src/editing/dialogexplorer.h +++ b/src/editing/dialogexplorer.h @@ -2,17 +2,12 @@ #define _PAYSAGES_QT_DIALOGEXPLORER_H_ #include "editing_global.h" + #include class CameraDefinition; class Renderer; -namespace paysages { -namespace opengl { -class WidgetExplorer; -} -} - class DialogExplorer : public QDialog { Q_OBJECT diff --git a/src/editing/dialognoise.cpp b/src/editing/dialognoise.cpp index b03501a..722d2d1 100644 --- a/src/editing/dialognoise.cpp +++ b/src/editing/dialognoise.cpp @@ -9,8 +9,8 @@ #include #include #include -#include -#include "rendering/tools/color.h" +#include +#include "tools/color.h" /**************** Previews ****************/ class PreviewLevel:public BasePreview diff --git a/src/editing/dialogrender.cpp b/src/editing/dialogrender.cpp index 39211b4..83030f0 100644 --- a/src/editing/dialogrender.cpp +++ b/src/editing/dialogrender.cpp @@ -1,6 +1,6 @@ #include "dialogrender.h" -#include +#include #include #include #include @@ -10,6 +10,12 @@ #include #include #include +#include +#include +#include +#include +#include +#include #include "tools.h" #include "Scenery.h" diff --git a/src/editing/dialogrender.h b/src/editing/dialogrender.h index 903ba53..49c270a 100644 --- a/src/editing/dialogrender.h +++ b/src/editing/dialogrender.h @@ -1,17 +1,18 @@ #ifndef _PAYSAGES_QT_DIALOGRENDER_H_ #define _PAYSAGES_QT_DIALOGRENDER_H_ -#include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include "rendering/renderer.h" -#include "rendering/tools/color.h" +#include "renderer.h" +#include "tools/color.h" + +class QThread; +class QProgressBar; +class QSlider; +class QComboBox; +class QLabel; +class QScrollArea; +class QMutex; class DialogRender : public QDialog { diff --git a/src/editing/editing.pro b/src/editing/editing.pro index de3ef27..afea6c0 100644 --- a/src/editing/editing.pro +++ b/src/editing/editing.pro @@ -9,8 +9,6 @@ unix:LIBS += -lGLU include(../common.pri) -INCLUDEPATH += $$PWD/.. - HEADERS += \ terrain/widgetheightmap.h \ widgetcurveeditor.h \ @@ -167,6 +165,12 @@ else:unix: LIBS += -L$$OUT_PWD/../render/software/ -lpaysages_render_software INCLUDEPATH += $$PWD/../render/software DEPENDPATH += $$PWD/../render/software +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../render/preview/release/ -lpaysages_render_preview +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../render/preview/debug/ -lpaysages_render_preview +else:unix: LIBS += -L$$OUT_PWD/../render/preview/ -lpaysages_render_preview +INCLUDEPATH += $$PWD/../render/preview +DEPENDPATH += $$PWD/../render/preview + win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../render/opengl/release/ -lpaysages_render_opengl else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../render/opengl/debug/ -lpaysages_render_opengl else:unix: LIBS += -L$$OUT_PWD/../render/opengl/ -lpaysages_render_opengl diff --git a/src/editing/editing_global.h b/src/editing/editing_global.h index 09e2e46..930ee0d 100644 --- a/src/editing/editing_global.h +++ b/src/editing/editing_global.h @@ -1,18 +1,8 @@ #ifndef EDITING_GLOBAL_H #define EDITING_GLOBAL_H -namespace paysages -{ - namespace system {} - namespace basics {} - namespace definition {} - namespace software {} - namespace opengl {} -} -using namespace paysages::system; -using namespace paysages::basics; -using namespace paysages::definition; -using namespace paysages::software; -using namespace paysages::opengl; +#include "definition_global.h" +#include "software_global.h" +#include "opengl_global.h" #endif // EDITING_GLOBAL_H diff --git a/src/editing/formatmosphere.cpp b/src/editing/formatmosphere.cpp index f62df52..f85b57d 100644 --- a/src/editing/formatmosphere.cpp +++ b/src/editing/formatmosphere.cpp @@ -4,61 +4,44 @@ #include #include -#include +#include -#include "rendering/atmosphere/public.h" +#include "atmosphere/public.h" +#include "AtmosphereColorPreviewRenderer.h" #include "Scenery.h" -#include "rendering/renderer.h" +#include "renderer.h" static AtmosphereDefinition* _definition; /**************** Previews ****************/ -class PreviewSkyEast:public BasePreview +class PreviewSkyEast:public PreviewRenderer, public AtmosphereColorPreviewRenderer { public: - PreviewSkyEast(QWidget* parent): - BasePreview(parent) + void bindEvent(BasePreview* preview) override { - _renderer = atmosphereCreatePreviewRenderer(); - - configHdrToneMapping(true); - configScaling(0.5, 5.0, 0.5, 2.5); - } -protected: - Color getColor(double x, double y) - { - return atmosphereGetPreview(_renderer, x, -y, -M_PI_2); + preview->configHdrToneMapping(true); + preview->configScaling(0.5, 5.0, 0.5, 2.5); } void updateData() { - AtmosphereRendererClass.bind(_renderer, _definition); + /*AtmosphereRendererClass.bind(_renderer, _definition); + _renderer->prepare();*/ } -private: - Renderer* _renderer; }; -class PreviewSkyWest:public BasePreview +class PreviewSkyWest:public PreviewRenderer, public AtmosphereColorPreviewRenderer { public: - PreviewSkyWest(QWidget* parent): - BasePreview(parent) + void bindEvent(BasePreview* preview) override { - _renderer = atmosphereCreatePreviewRenderer(); - - configHdrToneMapping(true); - configScaling(0.5, 5.0, 0.5, 2.5); - } -protected: - Color getColor(double x, double y) - { - return atmosphereGetPreview(_renderer, x, -y, M_PI_2); + preview->configHdrToneMapping(true); + preview->configScaling(0.5, 5.0, 0.5, 2.5); } void updateData() { - AtmosphereRendererClass.bind(_renderer, _definition); + /*AtmosphereRendererClass.bind(_renderer, _definition); + _renderer->prepare();*/ } -private: - Renderer* _renderer; }; /**************** Form ****************/ @@ -73,9 +56,9 @@ FormAtmosphere::FormAtmosphere(QWidget *parent): _definition = (AtmosphereDefinition*)AtmosphereDefinitionClass.create(); - previewWest = new PreviewSkyWest(this); + previewWest = new BasePreview(this); addPreview(previewWest, QString(tr("West preview"))); - previewEast = new PreviewSkyEast(this); + previewEast = new BasePreview(this); addPreview(previewEast, QString(tr("East preview"))); //addInputEnum(tr("Color model"), (int*)&_definition->model, QStringList(tr("Simplified model (with weather)")) << tr("Complex model")); diff --git a/src/editing/formclouds.cpp b/src/editing/formclouds.cpp index bcc243b..742c315 100644 --- a/src/editing/formclouds.cpp +++ b/src/editing/formclouds.cpp @@ -1,8 +1,8 @@ #include "formclouds.h" -#include "rendering/clouds/clo_preview.h" -#include "rendering/tools/color.h" -#include "rendering/tools/euclid.h" +#include "clouds/clo_preview.h" +#include "tools/color.h" +#include "tools/euclid.h" #include "Scenery.h" #include "tools.h" diff --git a/src/editing/formclouds.h b/src/editing/formclouds.h index 2f6a129..8838fd1 100644 --- a/src/editing/formclouds.h +++ b/src/editing/formclouds.h @@ -4,7 +4,7 @@ #include #include "basepreview.h" #include "baseformlayer.h" -#include "rendering/clouds/public.h" +#include "clouds/public.h" class FormClouds : public BaseFormLayer { diff --git a/src/editing/formrender.cpp b/src/editing/formrender.cpp index 3f00179..b1098be 100644 --- a/src/editing/formrender.cpp +++ b/src/editing/formrender.cpp @@ -5,11 +5,11 @@ #include "dialogrender.h" #include "inputcamera.h" #include "tools.h" -#include "rendering/render.h" -#include "rendering/atmosphere/public.h" -#include "rendering/clouds/public.h" -#include "rendering/terrain/public.h" -#include "rendering/water/public.h" +#include "render.h" +#include "atmosphere/public.h" +#include "clouds/public.h" +#include "terrain/public.h" +#include "water/public.h" #include "Scenery.h" #include "PackStream.h" #include "SoftwareRenderer.h" @@ -21,7 +21,7 @@ public: PreviewRenderLandscape(QWidget* parent) : BasePreview(parent) { - _renderer = sceneryCreateStandardRenderer(); + _renderer = new SoftwareRenderer(); _renderer->getCameraLocation = _getCameraLocation; lightingManagerDisableSpecularity(_renderer->lighting); @@ -35,6 +35,12 @@ public: configScaling(0.5, 200.0, 3.0, 50.0); configScrolling(-1000.0, 1000.0, 0.0, -1000.0, 1000.0, 0.0); } + ~PreviewRenderLandscape() + { + delete _renderer; + CloudsDefinitionClass.destroy(_no_clouds); + } + protected: Color getColor(double x, double y) @@ -58,12 +64,14 @@ protected: void updateData() { sceneryBindRenderer(_renderer); - _renderer->atmosphere->applyAerialPerspective = _applyAerialPerspective; - if (!_clouds_enabled) { CloudsRendererClass.bind(_renderer, _no_clouds); } + + _renderer->prepare(); + + _renderer->atmosphere->applyAerialPerspective = _applyAerialPerspective; } void toggleChangeEvent(QString key, bool value) diff --git a/src/editing/formrender.h b/src/editing/formrender.h index d0b18e6..407052a 100644 --- a/src/editing/formrender.h +++ b/src/editing/formrender.h @@ -2,9 +2,9 @@ #define _PAYSAGES_QT_FORMRENDER_H_ #include "baseform.h" -#include "rendering/camera.h" -#include "rendering/renderer.h" -#include "rendering/render.h" +#include "camera.h" +#include "renderer.h" +#include "render.h" class FormRender : public BaseForm { diff --git a/src/editing/formtextures.h b/src/editing/formtextures.h index e50f7f0..57a4a3a 100644 --- a/src/editing/formtextures.h +++ b/src/editing/formtextures.h @@ -4,7 +4,7 @@ #include #include "basepreview.h" #include "baseformlayer.h" -#include "rendering/textures/public.h" +#include "textures/public.h" class FormTextures : public BaseFormLayer { diff --git a/src/editing/formwater.cpp b/src/editing/formwater.cpp index eb53df3..0c99c1d 100644 --- a/src/editing/formwater.cpp +++ b/src/editing/formwater.cpp @@ -3,14 +3,14 @@ #include #include -#include +#include -#include "rendering/tools/euclid.h" -#include "rendering/tools/lighting.h" -#include "rendering/renderer.h" -#include "rendering/water/public.h" -#include "rendering/terrain/public.h" -#include "rendering/atmosphere/public.h" +#include "tools/euclid.h" +#include "tools/lighting.h" +#include "renderer.h" +#include "water/public.h" +#include "terrain/public.h" +#include "atmosphere/public.h" #include "tools.h" #include "Scenery.h" @@ -23,7 +23,8 @@ public: PreviewWaterCoverage(QWidget* parent) : BasePreview(parent) { - _renderer = waterCreatePreviewCoverageRenderer(); + _renderer = rendererCreate(); + waterAlterPreviewCoverageRenderer(_renderer); _highlight_enabled = true; addOsd(QString("geolocation")); diff --git a/src/editing/inputcamera.h b/src/editing/inputcamera.h index e5fedfa..b447056 100644 --- a/src/editing/inputcamera.h +++ b/src/editing/inputcamera.h @@ -4,7 +4,7 @@ #include #include "baseinput.h" -#include "rendering/camera.h" +#include "camera.h" class InputCamera:public BaseInput { diff --git a/src/editing/inputcolor.cpp b/src/editing/inputcolor.cpp index 0da244e..23bb576 100644 --- a/src/editing/inputcolor.cpp +++ b/src/editing/inputcolor.cpp @@ -5,8 +5,8 @@ #include #include -#include "editing/lighting/SmallPreviewColor.h" -#include "editing/tools.h" +#include "lighting/SmallPreviewColor.h" +#include "tools.h" InputColor::InputColor(QWidget* form, QString label, Color* value): BaseInput(form, label), diff --git a/src/editing/inputcolor.h b/src/editing/inputcolor.h index a3bb3c2..2b9df25 100644 --- a/src/editing/inputcolor.h +++ b/src/editing/inputcolor.h @@ -4,7 +4,7 @@ #include #include "baseinput.h" -#include "rendering/shared/types.h" +#include "shared/types.h" class InputColor:public BaseInput { diff --git a/src/editing/inputcolorgradation.h b/src/editing/inputcolorgradation.h index 54bd555..3fa2983 100644 --- a/src/editing/inputcolorgradation.h +++ b/src/editing/inputcolorgradation.h @@ -4,7 +4,7 @@ #include #include "baseinput.h" -#include "rendering/tools/color.h" +#include "tools/color.h" class InputColorGradation:public BaseInput { diff --git a/src/editing/inputcurve.h b/src/editing/inputcurve.h index bab3bd9..aad5dc4 100644 --- a/src/editing/inputcurve.h +++ b/src/editing/inputcurve.h @@ -4,7 +4,7 @@ #include #include "baseinput.h" -#include "rendering/tools/curve.h" +#include "tools/curve.h" class InputCurve:public BaseInput { diff --git a/src/editing/inputmaterial.cpp b/src/editing/inputmaterial.cpp index 771f202..89cd77d 100644 --- a/src/editing/inputmaterial.cpp +++ b/src/editing/inputmaterial.cpp @@ -5,8 +5,8 @@ #include #include -#include "editing/lighting/DialogMaterialEditor.h" -#include "editing/previewmaterial.h" +#include "lighting/DialogMaterialEditor.h" +#include "previewmaterial.h" InputMaterial::InputMaterial(QWidget* form, QString label, SurfaceMaterial* value) : BaseInput(form, label) { diff --git a/src/editing/inputmaterial.h b/src/editing/inputmaterial.h index 6955350..bfb6759 100644 --- a/src/editing/inputmaterial.h +++ b/src/editing/inputmaterial.h @@ -4,8 +4,7 @@ #include #include "baseinput.h" -#include "rendering/shared/types.h" -#include "rendering/tools/lighting.h" +#include "tools/lighting.h" class InputMaterial:public BaseInput { diff --git a/src/editing/lighting/DialogMaterialEditor.cpp b/src/editing/lighting/DialogMaterialEditor.cpp index f063957..4f3aa77 100644 --- a/src/editing/lighting/DialogMaterialEditor.cpp +++ b/src/editing/lighting/DialogMaterialEditor.cpp @@ -1,7 +1,7 @@ #include "DialogMaterialEditor.h" #include "ui_DialogMaterialEditor.h" -#include "editing/common/freeformhelper.h" +#include "common/freeformhelper.h" DialogMaterialEditor::DialogMaterialEditor(QWidget *parent, SurfaceMaterial* material) : QDialog(parent), diff --git a/src/editing/lighting/DialogMaterialEditor.h b/src/editing/lighting/DialogMaterialEditor.h index 1cf92a8..92aab4c 100644 --- a/src/editing/lighting/DialogMaterialEditor.h +++ b/src/editing/lighting/DialogMaterialEditor.h @@ -3,10 +3,10 @@ #include -#include "editing/previewmaterial.h" +#include "previewmaterial.h" -#include "rendering/tools/lighting.h" -#include "rendering/renderer.h" +#include "tools/lighting.h" +#include "renderer.h" namespace Ui { class DialogMaterialEditor; diff --git a/src/editing/lighting/SmallPreviewColor.cpp b/src/editing/lighting/SmallPreviewColor.cpp index f147b82..3362536 100644 --- a/src/editing/lighting/SmallPreviewColor.cpp +++ b/src/editing/lighting/SmallPreviewColor.cpp @@ -2,7 +2,7 @@ #include -#include "editing/tools.h" +#include "tools.h" SmallPreviewColor::SmallPreviewColor(QWidget* parent, Color* color) : DrawingWidget(parent) { diff --git a/src/editing/lighting/SmallPreviewColor.h b/src/editing/lighting/SmallPreviewColor.h index aeb95e8..87bd6f4 100644 --- a/src/editing/lighting/SmallPreviewColor.h +++ b/src/editing/lighting/SmallPreviewColor.h @@ -1,9 +1,9 @@ #ifndef SMALLPREVIEWCOLOR_H #define SMALLPREVIEWCOLOR_H -#include "editing/common/DrawingWidget.h" +#include "common/DrawingWidget.h" -#include "rendering/tools/color.h" +#include "tools/color.h" class SmallPreviewColor: public DrawingWidget { diff --git a/src/editing/lighting/SmallPreviewHues.cpp b/src/editing/lighting/SmallPreviewHues.cpp index d4283e7..605d6bc 100644 --- a/src/editing/lighting/SmallPreviewHues.cpp +++ b/src/editing/lighting/SmallPreviewHues.cpp @@ -2,7 +2,7 @@ #include -#include "editing/tools.h" +#include "tools.h" SmallPreviewHues::SmallPreviewHues(QWidget* parent) : DrawingWidget(parent) { diff --git a/src/editing/lighting/SmallPreviewHues.h b/src/editing/lighting/SmallPreviewHues.h index 312b92e..34e4c96 100644 --- a/src/editing/lighting/SmallPreviewHues.h +++ b/src/editing/lighting/SmallPreviewHues.h @@ -1,9 +1,7 @@ #ifndef SMALLPREVIEWHUES_H #define SMALLPREVIEWHUES_H -#include "editing/common/DrawingWidget.h" - -#include "rendering/tools/color.h" +#include "common/DrawingWidget.h" class SmallPreviewHues: public DrawingWidget { diff --git a/src/editing/previewcolorgradation.h b/src/editing/previewcolorgradation.h index dc09095..7de470e 100644 --- a/src/editing/previewcolorgradation.h +++ b/src/editing/previewcolorgradation.h @@ -3,7 +3,7 @@ #include -#include "rendering/tools/color.h" +#include "tools/color.h" typedef enum { diff --git a/src/editing/previewmaterial.cpp b/src/editing/previewmaterial.cpp index c57d7a3..0548f06 100644 --- a/src/editing/previewmaterial.cpp +++ b/src/editing/previewmaterial.cpp @@ -1,11 +1,12 @@ #include "previewmaterial.h" -#include +#include #include #include "tools.h" +#include "SoftwareRenderer.h" -#include "rendering/tools/lighting.h" -#include "rendering/tools/color.h" +#include "tools/lighting.h" +#include "tools/color.h" /***** Shared renderer *****/ MaterialPreviewRenderer::MaterialPreviewRenderer(SurfaceMaterial* material) diff --git a/src/editing/previewmaterial.h b/src/editing/previewmaterial.h index d2684bc..fb24cf9 100644 --- a/src/editing/previewmaterial.h +++ b/src/editing/previewmaterial.h @@ -2,13 +2,12 @@ #define _PAYSAGES_QT_PREVIEWMATERIAL_H_ #include "basepreview.h" -#include "editing/common/previewrenderer.h" +#include "common/previewrenderer.h" -#include "rendering/tools/lighting.h" -#include "rendering/renderer.h" +#include "tools/lighting.h" +#include "renderer.h" class MaterialPreviewRenderer:public PreviewRenderer { - Q_OBJECT public: MaterialPreviewRenderer(SurfaceMaterial* material); ~MaterialPreviewRenderer(); diff --git a/src/editing/previewosd.h b/src/editing/previewosd.h index dde5e7d..2c5ada5 100644 --- a/src/editing/previewosd.h +++ b/src/editing/previewosd.h @@ -2,7 +2,7 @@ #define _PAYSAGES_QT_PREVIEWOSD_H_ #include -#include "rendering/camera.h" +#include "camera.h" class PreviewOsdItem:public QImage { diff --git a/src/editing/terrain/dialogterrainpainting.h b/src/editing/terrain/dialogterrainpainting.h index 4cbf109..a57fc51 100644 --- a/src/editing/terrain/dialogterrainpainting.h +++ b/src/editing/terrain/dialogterrainpainting.h @@ -3,7 +3,7 @@ #include #include "paintingbrush.h" -#include "rendering/terrain/public.h" +#include "terrain/public.h" namespace Ui { class DialogTerrainPainting; diff --git a/src/editing/terrain/mainterrainform.cpp b/src/editing/terrain/mainterrainform.cpp index 49055a5..71970fa 100644 --- a/src/editing/terrain/mainterrainform.cpp +++ b/src/editing/terrain/mainterrainform.cpp @@ -7,7 +7,7 @@ #include "previewterrainshape.h" #include "tools.h" #include "Scenery.h" -#include "rendering/textures/public.h" +#include "textures/public.h" MainTerrainForm::MainTerrainForm(QWidget *parent) : QWidget(parent), diff --git a/src/editing/terrain/mainterrainform.h b/src/editing/terrain/mainterrainform.h index 5cf5bb9..5c7a816 100644 --- a/src/editing/terrain/mainterrainform.h +++ b/src/editing/terrain/mainterrainform.h @@ -3,7 +3,7 @@ #include #include "common/freeformhelper.h" -#include "rendering/terrain/public.h" +#include "terrain/public.h" namespace Ui { class MainTerrainForm; diff --git a/src/editing/terrain/paintingbrush.cpp b/src/editing/terrain/paintingbrush.cpp index d846d65..0d48dd1 100644 --- a/src/editing/terrain/paintingbrush.cpp +++ b/src/editing/terrain/paintingbrush.cpp @@ -1,6 +1,7 @@ #include "paintingbrush.h" #include +#include #include "NoiseGenerator.h" PaintingBrush::PaintingBrush() diff --git a/src/editing/terrain/paintingbrush.h b/src/editing/terrain/paintingbrush.h index 815f69f..7d87a0f 100644 --- a/src/editing/terrain/paintingbrush.h +++ b/src/editing/terrain/paintingbrush.h @@ -1,14 +1,15 @@ #ifndef PAINTINGBRUSH_H #define PAINTINGBRUSH_H -#include -#include "rendering/terrain/public.h" +#include "terrain/public.h" namespace paysages { namespace basics { class NoiseGenerator; } } +class QAbstractSlider; +class QWidget; typedef enum { diff --git a/src/editing/terrain/previewterrainshape.cpp b/src/editing/terrain/previewterrainshape.cpp index 274e91f..7ec4565 100644 --- a/src/editing/terrain/previewterrainshape.cpp +++ b/src/editing/terrain/previewterrainshape.cpp @@ -1,16 +1,15 @@ #include "previewterrainshape.h" +#include "SoftwareRenderer.h" #include "basepreview.h" -#include "rendering/water/public.h" +#include "water/public.h" PreviewTerrainShape::PreviewTerrainShape(TerrainDefinition* terrain) { _terrain = terrain; _highlight_enabled = true; - // TODO Don't delete the base renderer, just alter it - rendererDelete(renderer); - renderer = terrainCreatePreviewRenderer(); + terrainAlterPreviewRenderer(renderer); } void PreviewTerrainShape::bindEvent(BasePreview* preview) @@ -27,7 +26,7 @@ void PreviewTerrainShape::updateEvent() TerrainRendererClass.bind(renderer, _terrain); } -Color PreviewTerrainShape::getColor2D(double x, double y, double scaling) +Color PreviewTerrainShape::getColor2D(double x, double y, double scaling) const { return waterGetPreviewCoverage(renderer, x, y, scaling, _highlight_enabled ? 1 : 0); } diff --git a/src/editing/terrain/previewterrainshape.h b/src/editing/terrain/previewterrainshape.h index c99141e..5561c31 100644 --- a/src/editing/terrain/previewterrainshape.h +++ b/src/editing/terrain/previewterrainshape.h @@ -2,19 +2,18 @@ #define PREVIEWTERRAINSHAPE_H #include "common/previewrenderer.h" -#include "rendering/renderer.h" -#include "rendering/terrain/public.h" +#include "renderer.h" +#include "terrain/public.h" class PreviewTerrainShape : public PreviewRenderer { - Q_OBJECT public: explicit PreviewTerrainShape(TerrainDefinition* terrain); protected: virtual void bindEvent(BasePreview* preview); virtual void updateEvent(); - virtual Color getColor2D(double x, double y, double scaling); + virtual Color getColor2D(double x, double y, double scaling) const override; virtual void toggleChangeEvent(QString key, bool value); private: diff --git a/src/editing/terrain/widgetheightmap.cpp b/src/editing/terrain/widgetheightmap.cpp index 0bb0a60..3961f78 100644 --- a/src/editing/terrain/widgetheightmap.cpp +++ b/src/editing/terrain/widgetheightmap.cpp @@ -7,7 +7,7 @@ #include #include "tools.h" #include "Scenery.h" -#include "rendering/water/public.h" +#include "water/public.h" #define HEIGHTMAP_RESOLUTION 256 diff --git a/src/editing/terrain/widgetheightmap.h b/src/editing/terrain/widgetheightmap.h index b4f87d1..14d62ce 100644 --- a/src/editing/terrain/widgetheightmap.h +++ b/src/editing/terrain/widgetheightmap.h @@ -4,10 +4,10 @@ #include #include #include "terrain/paintingbrush.h" -#include "rendering/camera.h" -#include "rendering/tools/euclid.h" -#include "rendering/renderer.h" -#include "rendering/terrain/public.h" +#include "camera.h" +#include "tools/euclid.h" +#include "renderer.h" +#include "terrain/public.h" typedef struct { diff --git a/src/editing/terrain/widgetterrainbasenoisepreview.h b/src/editing/terrain/widgetterrainbasenoisepreview.h index ad565e9..206a467 100644 --- a/src/editing/terrain/widgetterrainbasenoisepreview.h +++ b/src/editing/terrain/widgetterrainbasenoisepreview.h @@ -2,16 +2,10 @@ #define _PAYSAGES_EDITING_TERRAIN_WIDGETTERRAINBASENOISEPREVIEW_H_ #include "editing_global.h" -#include "editing/common/DrawingWidget.h" +#include "common/DrawingWidget.h" class QPainter; -namespace paysages { -namespace basics { - class NoiseGenerator; -} -} - class WidgetTerrainBaseNoisePreview : public DrawingWidget { Q_OBJECT diff --git a/src/editing/textures/DialogTexturesLayer.h b/src/editing/textures/DialogTexturesLayer.h index d151009..87e10bb 100644 --- a/src/editing/textures/DialogTexturesLayer.h +++ b/src/editing/textures/DialogTexturesLayer.h @@ -2,7 +2,7 @@ #define DIALOGTEXTURESLAYER_H #include -#include "rendering/textures/public.h" +#include "textures/public.h" namespace Ui { class DialogTexturesLayer; diff --git a/src/editing/textures/PreviewCumul.cpp b/src/editing/textures/PreviewCumul.cpp index 0306cd2..bc3e9cd 100644 --- a/src/editing/textures/PreviewCumul.cpp +++ b/src/editing/textures/PreviewCumul.cpp @@ -1,7 +1,8 @@ #include "PreviewCumul.h" -#include "editing/basepreview.h" -#include "rendering/textures/tex_preview.h" +#include "SoftwareRenderer.h" +#include "basepreview.h" +#include "textures/tex_preview.h" void PreviewCumul::setTextures(TexturesDefinition* textures) { diff --git a/src/editing/textures/PreviewCumul.h b/src/editing/textures/PreviewCumul.h index 36a3f63..fd01eeb 100644 --- a/src/editing/textures/PreviewCumul.h +++ b/src/editing/textures/PreviewCumul.h @@ -1,7 +1,7 @@ #ifndef EDITING_TEXTURES_PREVIEWCUMUL_H #define EDITING_TEXTURES_PREVIEWCUMUL_H -#include "editing/common/previewrenderer.h" +#include "common/previewrenderer.h" class BasePreview; class TexturesDefinition; @@ -9,8 +9,8 @@ class TexturesDefinition; class PreviewCumul : public PreviewRenderer { public: - explicit PreviewCumul(QObject *parent = 0): - PreviewRenderer(parent),textures(0){} + explicit PreviewCumul(): + PreviewRenderer(),textures(0){} void setTextures(TexturesDefinition* textures); void setLayer(int layer); diff --git a/src/editing/textures/PreviewLayerCoverage.cpp b/src/editing/textures/PreviewLayerCoverage.cpp index 7eb334d..05f6df6 100644 --- a/src/editing/textures/PreviewLayerCoverage.cpp +++ b/src/editing/textures/PreviewLayerCoverage.cpp @@ -1,7 +1,8 @@ #include "PreviewLayerCoverage.h" -#include "editing/basepreview.h" -#include "rendering/textures/tex_preview.h" +#include "SoftwareRenderer.h" +#include "basepreview.h" +#include "textures/tex_preview.h" void PreviewLayerCoverage::setTextures(TexturesDefinition* textures) { diff --git a/src/editing/textures/PreviewLayerCoverage.h b/src/editing/textures/PreviewLayerCoverage.h index a6b4f8f..3105ab4 100644 --- a/src/editing/textures/PreviewLayerCoverage.h +++ b/src/editing/textures/PreviewLayerCoverage.h @@ -1,7 +1,7 @@ #ifndef EDITING_TEXTURES_PREVIEWLAYERCOVERAGE_H #define EDITING_TEXTURES_PREVIEWLAYERCOVERAGE_H -#include "editing/common/previewrenderer.h" +#include "common/previewrenderer.h" class BasePreview; class TexturesDefinition; @@ -9,8 +9,8 @@ class TexturesDefinition; class PreviewLayerCoverage : public PreviewRenderer { public: - explicit PreviewLayerCoverage(QObject *parent = 0): - PreviewRenderer(parent),textures(0){} + explicit PreviewLayerCoverage(): + PreviewRenderer(),textures(0){} void setTextures(TexturesDefinition* textures); void setLayer(int layer); diff --git a/src/editing/textures/PreviewLayerLook.cpp b/src/editing/textures/PreviewLayerLook.cpp index 4b70ccb..6accca5 100644 --- a/src/editing/textures/PreviewLayerLook.cpp +++ b/src/editing/textures/PreviewLayerLook.cpp @@ -1,7 +1,8 @@ #include "PreviewLayerLook.h" -#include "editing/basepreview.h" -#include "rendering/textures/tex_preview.h" +#include "SoftwareRenderer.h" +#include "basepreview.h" +#include "textures/tex_preview.h" void PreviewLayerLook::setTextures(TexturesDefinition* textures) { diff --git a/src/editing/textures/PreviewLayerLook.h b/src/editing/textures/PreviewLayerLook.h index 9323b82..b768a8d 100644 --- a/src/editing/textures/PreviewLayerLook.h +++ b/src/editing/textures/PreviewLayerLook.h @@ -1,7 +1,7 @@ #ifndef EDITING_TEXTURES_PREVIEWLAYERLOOK_H #define EDITING_TEXTURES_PREVIEWLAYERLOOK_H -#include "editing/common/previewrenderer.h" +#include "common/previewrenderer.h" class BasePreview; class TexturesDefinition; @@ -9,8 +9,8 @@ class TexturesDefinition; class PreviewLayerLook : public PreviewRenderer { public: - explicit PreviewLayerLook(QObject *parent = 0): - PreviewRenderer(parent),textures(0){} + explicit PreviewLayerLook(): + PreviewRenderer(),textures(0){} void setTextures(TexturesDefinition* textures); void setLayer(int layer); diff --git a/src/editing/textures/maintexturesform.cpp b/src/editing/textures/maintexturesform.cpp index 1c0ebcb..3376312 100644 --- a/src/editing/textures/maintexturesform.cpp +++ b/src/editing/textures/maintexturesform.cpp @@ -5,10 +5,10 @@ #include "../common/freelayerhelper.h" #include "Scenery.h" #include "previewmaterial.h" -#include "editing/textures/PreviewLayerCoverage.h" -#include "editing/textures/PreviewLayerLook.h" -#include "editing/textures/PreviewCumul.h" -#include "editing/textures/DialogTexturesLayer.h" +#include "textures/PreviewLayerCoverage.h" +#include "textures/PreviewLayerLook.h" +#include "textures/PreviewCumul.h" +#include "textures/DialogTexturesLayer.h" MainTexturesForm::MainTexturesForm(QWidget *parent) : QWidget(parent), ui(new Ui::MainTexturesForm) { diff --git a/src/editing/textures/maintexturesform.h b/src/editing/textures/maintexturesform.h index c131b86..6191b63 100644 --- a/src/editing/textures/maintexturesform.h +++ b/src/editing/textures/maintexturesform.h @@ -2,7 +2,7 @@ #define MAINTEXTURESFORM_H #include -#include "rendering/textures/public.h" +#include "textures/public.h" namespace Ui { class MainTexturesForm; diff --git a/src/editing/tools.h b/src/editing/tools.h index 634ac9a..f479ca4 100644 --- a/src/editing/tools.h +++ b/src/editing/tools.h @@ -5,8 +5,8 @@ #include #include -#include "rendering/shared/types.h" -#include "rendering/tools/color.h" +#include "shared/types.h" +#include "tools/color.h" static inline QColor colorToQColor(Color color) { diff --git a/src/editing/widgetcurveeditor.cpp b/src/editing/widgetcurveeditor.cpp index d6eab04..de89fdb 100644 --- a/src/editing/widgetcurveeditor.cpp +++ b/src/editing/widgetcurveeditor.cpp @@ -3,7 +3,7 @@ #include #include #include -#include "rendering/tools.h" +#include "tools.h" WidgetCurveEditor::WidgetCurveEditor(QWidget *parent, double xmin, double xmax, double ymin, double ymax) : QWidget(parent) { diff --git a/src/editing/widgetcurveeditor.h b/src/editing/widgetcurveeditor.h index d6d5ce6..92a4397 100644 --- a/src/editing/widgetcurveeditor.h +++ b/src/editing/widgetcurveeditor.h @@ -3,7 +3,7 @@ #include #include -#include "rendering/tools/curve.h" +#include "tools/curve.h" class WidgetCurveEditor : public QWidget { diff --git a/src/paysages.pro b/src/paysages.pro index d43028b..cce9da1 100644 --- a/src/paysages.pro +++ b/src/paysages.pro @@ -7,6 +7,7 @@ SUBDIRS = \ definition \ rendering \ render/software \ + render/preview \ render/opengl \ editing \ controlling \ diff --git a/src/render/opengl/OpenGLRenderer.cpp b/src/render/opengl/OpenGLRenderer.cpp index e20ce39..9c11fe0 100644 --- a/src/render/opengl/OpenGLRenderer.cpp +++ b/src/render/opengl/OpenGLRenderer.cpp @@ -4,21 +4,15 @@ #include #include #include "Scenery.h" +#include "SoftwareRenderer.h" #include "renderer.h" #include "rendering/camera.h" OpenGLRenderer::OpenGLRenderer(Scenery* scenery): scenery(scenery) { - if (scenery) - { - renderer = rendererCreate(); - // TODO Bind scenery to renderer - } - else - { - renderer = sceneryCreateStandardRenderer(); - } + renderer = new SoftwareRenderer(scenery); + renderer->prepare(); } OpenGLRenderer::~OpenGLRenderer() diff --git a/src/render/opengl/WidgetExplorer.cpp b/src/render/opengl/WidgetExplorer.cpp index 3acdcc8..e3bada2 100644 --- a/src/render/opengl/WidgetExplorer.cpp +++ b/src/render/opengl/WidgetExplorer.cpp @@ -7,6 +7,7 @@ #include #include #include "Scenery.h" +#include "SoftwareRenderer.h" #include "OpenGLRenderer.h" #include "rendering/tools/euclid.h" #include "rendering/renderer.h" @@ -87,10 +88,11 @@ QGLWidget(parent) } else { - _renderer = sceneryCreateStandardRenderer(); + _renderer = new SoftwareRenderer(); _renderer_created = true; } _opengl_renderer = new OpenGLRenderer(NULL); + _renderer->prepare(); _renderer->render_quality = 3; _renderer->customData[2] = _base_camera; _renderer->getCameraLocation = _getCameraLocation; diff --git a/src/render/opengl/opengl.pro b/src/render/opengl/opengl.pro index 59896d6..947cdd2 100644 --- a/src/render/opengl/opengl.pro +++ b/src/render/opengl/opengl.pro @@ -63,3 +63,9 @@ else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../rendering/deb else:unix: LIBS += -L$$OUT_PWD/../../rendering/ -lpaysages_rendering INCLUDEPATH += $$PWD/../../rendering DEPENDPATH += $$PWD/../../rendering + +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../software/release/ -lpaysages_render_software +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../software/debug/ -lpaysages_render_software +else:unix: LIBS += -L$$OUT_PWD/../software/ -lpaysages_render_software +INCLUDEPATH += $$PWD/../software +DEPENDPATH += $$PWD/../software diff --git a/src/render/opengl/opengl_global.h b/src/render/opengl/opengl_global.h index 69116ca..aedbb9b 100644 --- a/src/render/opengl/opengl_global.h +++ b/src/render/opengl/opengl_global.h @@ -9,8 +9,12 @@ # define OPENGLSHARED_EXPORT Q_DECL_IMPORT #endif +#include "software_global.h" + namespace paysages { -namespace opengl {} +namespace opengl { + class WidgetExplorer; +} } using namespace paysages::opengl; diff --git a/src/rendering/atmosphere/atm_preview.cpp b/src/render/preview/AtmosphereColorPreviewRenderer.cpp similarity index 89% rename from src/rendering/atmosphere/atm_preview.cpp rename to src/render/preview/AtmosphereColorPreviewRenderer.cpp index ec1498b..f2042c9 100644 --- a/src/rendering/atmosphere/atm_preview.cpp +++ b/src/render/preview/AtmosphereColorPreviewRenderer.cpp @@ -1,7 +1,9 @@ -#include "public.h" +#include "AtmosphereColorPreviewRenderer.h" -#include "../renderer.h" -#include "rendering/camera.h" +#include "SoftwareRenderer.h" +#include "AtmosphereRenderer.h" +#include "camera.h" +#include "tools/lighting.h" /* * Atmosphere previews. @@ -142,7 +144,13 @@ static inline int _checkHit(Vector3 eye, Vector3 direction, Vector3* hit, Vector return _checkHitGround(eye, direction, hit); } -Color atmosphereGetPreview(Renderer* renderer, double x, double y, double heading) +AtmosphereColorPreviewRenderer::AtmosphereColorPreviewRenderer(): + heading(0.0) +{ + cameraSetLocation(renderer->render_camera, Vector3(0.0, 7.0, 0.0)); +} + +Color AtmosphereColorPreviewRenderer::getColor2D(double x, double y, double) const { Vector3 eye = {0.0, 7.0, 0.0}; Vector3 direction = {x, y, -1.0}; @@ -168,13 +176,3 @@ Color atmosphereGetPreview(Renderer* renderer, double x, double y, double headin return renderer->atmosphere->getSkyColor(renderer, direction).final; } } - -Renderer* atmosphereCreatePreviewRenderer() -{ - Renderer* result = rendererCreate(); - Vector3 location = {0.0, 7.0, 0.0}; - - cameraSetLocation(result->render_camera, location); - - return result; -} diff --git a/src/render/preview/AtmosphereColorPreviewRenderer.h b/src/render/preview/AtmosphereColorPreviewRenderer.h new file mode 100644 index 0000000..f26ad4b --- /dev/null +++ b/src/render/preview/AtmosphereColorPreviewRenderer.h @@ -0,0 +1,23 @@ +#ifndef ATMOSPHERECOLORPREVIEWRENDERER_H +#define ATMOSPHERECOLORPREVIEWRENDERER_H + +#include "Base2dPreviewRenderer.h" + +namespace paysages { +namespace preview { + +class AtmosphereColorPreviewRenderer:public Base2dPreviewRenderer +{ +public: + AtmosphereColorPreviewRenderer(); + + virtual Color getColor2D(double x, double y, double scaling) const override; + +protected: + double heading; +}; + +} +} + +#endif // ATMOSPHERECOLORPREVIEWRENDERER_H diff --git a/src/render/preview/Base2dPreviewRenderer.cpp b/src/render/preview/Base2dPreviewRenderer.cpp new file mode 100644 index 0000000..8973dc7 --- /dev/null +++ b/src/render/preview/Base2dPreviewRenderer.cpp @@ -0,0 +1,18 @@ +#include "Base2dPreviewRenderer.h" + +#include "SoftwareRenderer.h" + +Base2dPreviewRenderer::Base2dPreviewRenderer() +{ + renderer = new SoftwareRenderer(); +} + +void Base2dPreviewRenderer::updateEvent() +{ + delete renderer; +} + +Color Base2dPreviewRenderer::getColor2D(double, double, double) const +{ + return COLOR_BLACK; +} diff --git a/src/render/preview/Base2dPreviewRenderer.h b/src/render/preview/Base2dPreviewRenderer.h new file mode 100644 index 0000000..d6ebb34 --- /dev/null +++ b/src/render/preview/Base2dPreviewRenderer.h @@ -0,0 +1,27 @@ +#ifndef BASE2DPREVIEWRENDERER_H +#define BASE2DPREVIEWRENDERER_H + +#include "preview_global.h" + +#include "tools/color.h" + +namespace paysages { +namespace preview { + +class PREVIEWSHARED_EXPORT Base2dPreviewRenderer +{ + +public: + Base2dPreviewRenderer(); + + virtual void updateEvent(); + virtual Color getColor2D(double x, double y, double scaling) const; + +protected: + SoftwareRenderer* renderer; +}; + +} +} + +#endif // BASE2DPREVIEWRENDERER_H diff --git a/src/render/preview/preview.pro b/src/render/preview/preview.pro new file mode 100644 index 0000000..8c95f0b --- /dev/null +++ b/src/render/preview/preview.pro @@ -0,0 +1,58 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2013-11-11T17:56:07 +# +#------------------------------------------------- + +TARGET = paysages_render_preview +TEMPLATE = lib + +DEFINES += PREVIEW_LIBRARY + +include(../../common.pri) + +SOURCES += Base2dPreviewRenderer.cpp \ + AtmosphereColorPreviewRenderer.cpp + +HEADERS += Base2dPreviewRenderer.h\ + preview_global.h \ + AtmosphereColorPreviewRenderer.h + +unix:!symbian { + maemo5 { + target.path = /opt/usr/lib + } else { + target.path = /usr/lib + } + INSTALLS += target +} + +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../system/release/ -lpaysages_system +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../system/debug/ -lpaysages_system +else:unix: LIBS += -L$$OUT_PWD/../../system/ -lpaysages_system +INCLUDEPATH += $$PWD/../../system +DEPENDPATH += $$PWD/../../system + +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../basics/release/ -lpaysages_basics +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../basics/debug/ -lpaysages_basics +else:unix: LIBS += -L$$OUT_PWD/../../basics/ -lpaysages_basics +INCLUDEPATH += $$PWD/../../basics +DEPENDPATH += $$PWD/../../basics + +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../definition/release/ -lpaysages_definition +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../definition/debug/ -lpaysages_definition +else:unix: LIBS += -L$$OUT_PWD/../../definition/ -lpaysages_definition +INCLUDEPATH += $$PWD/../../definition +DEPENDPATH += $$PWD/../../definition + +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../rendering/release/ -lpaysages_rendering +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../rendering/debug/ -lpaysages_rendering +else:unix: LIBS += -L$$OUT_PWD/../../rendering/ -lpaysages_rendering +INCLUDEPATH += $$PWD/../../rendering +DEPENDPATH += $$PWD/../../rendering + +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../software/release/ -lpaysages_render_software +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../software/debug/ -lpaysages_render_software +else:unix: LIBS += -L$$OUT_PWD/../software/ -lpaysages_render_software +INCLUDEPATH += $$PWD/../software +DEPENDPATH += $$PWD/../software diff --git a/src/render/preview/preview_global.h b/src/render/preview/preview_global.h new file mode 100644 index 0000000..cdb99e3 --- /dev/null +++ b/src/render/preview/preview_global.h @@ -0,0 +1,22 @@ +#ifndef PREVIEW_GLOBAL_H +#define PREVIEW_GLOBAL_H + +#include + +#if defined(PREVIEW_LIBRARY) +# define PREVIEWSHARED_EXPORT Q_DECL_EXPORT +#else +# define PREVIEWSHARED_EXPORT Q_DECL_IMPORT +#endif + +#include "software_global.h" + +namespace paysages { +namespace preview { +class Base2dPreviewRenderer; +class AtmosphereColorPreviewRenderer; +} +} +using namespace paysages::preview; + +#endif // PREVIEW_GLOBAL_H diff --git a/src/render/software/AtmosphereRenderer.cpp b/src/render/software/AtmosphereRenderer.cpp new file mode 100644 index 0000000..d98665c --- /dev/null +++ b/src/render/software/AtmosphereRenderer.cpp @@ -0,0 +1,203 @@ +#include "AtmosphereRenderer.h" + +#include +#include "SoftwareRenderer.h" +#include "Scenery.h" + +// TEMP +#include "atmosphere/private.h" + +static inline double _getDayFactor(double daytime) +{ + daytime = 1.0 - fabs(0.5 - daytime) / 0.5; + return daytime < 0.45 ? 0.0 : sqrt((daytime - 0.45) / 0.55); +} + +static inline void _applyWeatherEffects(AtmosphereDefinition* definition, AtmosphereResult* result) +{ + double distance = result->distance; + double max_distance = 100.0 - 90.0 * definition->humidity; + double distancefactor, dayfactor; + + if (distance > max_distance) + { + distance = max_distance; + } + distancefactor = (distance > max_distance ? max_distance : distance) / max_distance; + /* TODO Get day lighting from model */ + dayfactor = _getDayFactor(definition->_daytime); + + /* Fog masking */ + if (definition->humidity > 0.3) + { + result->mask.r = result->mask.g = result->mask.b = (10.0 - 8.0 * definition->humidity) * dayfactor; + result->mask.a = distancefactor * (definition->humidity - 0.3) / 0.7; + } + + /* Scattering tweaking */ + if (definition->humidity < 0.15) + { + /* Limit scattering on ultra clear day */ + double force = (0.15 - definition->humidity) / 0.15; + colorLimitPower(&result->inscattering, 100.0 - 90.0 * pow(force, 0.1)); + } + else + { + /* Scattering boost */ + double force = 1.2 * (definition->humidity < 0.5 ? sqrt((definition->humidity - 0.15) / 0.35) : 1.0 - (definition->humidity - 0.5) / 0.5); + result->inscattering.r *= 1.0 + force * distancefactor * (definition->humidity - 0.15) / 0.85; + result->inscattering.g *= 1.0 + force * distancefactor * (definition->humidity - 0.15) / 0.85; + result->inscattering.b *= 1.0 + force * distancefactor * (definition->humidity - 0.15) / 0.85; + } + + /* Attenuation */ + result->attenuation.r *= 1.0 - 0.4 * distancefactor * definition->humidity; + result->attenuation.g *= 1.0 - 0.4 * distancefactor * definition->humidity; + result->attenuation.b *= 1.0 - 0.4 * distancefactor * definition->humidity; + + atmosphereUpdateResult(result); +} + + +BaseAtmosphereRenderer::BaseAtmosphereRenderer(SoftwareRenderer* renderer): + renderer(renderer) +{ + +} + +void BaseAtmosphereRenderer::getLightingStatus(LightStatus* status, Vector3, int) +{ + LightDefinition light; + + light.color.r = 1.0; + light.color.g = 1.0; + light.color.b = 1.0; + light.direction.x = -0.7; + light.direction.y = -0.7; + light.direction.z = 0.7; + light.altered = 0; + light.reflection = 0.0; + lightingPushLight(status, &light); + light.color.r = 0.3; + light.color.g = 0.31; + light.color.b = 0.34; + light.direction.x = 0.7; + light.direction.y = -0.7; + light.direction.z = -0.7; + light.altered = 0; + light.reflection = 0.0; + lightingPushLight(status, &light); +} + +AtmosphereResult BaseAtmosphereRenderer::applyAerialPerspective(Vector3, Color base) +{ + AtmosphereResult result; + result.base = result.final = base; + result.inscattering = result.attenuation = COLOR_BLACK; + return result; +} + +AtmosphereResult BaseAtmosphereRenderer::getSkyColor(Vector3) +{ + AtmosphereResult result; + result.base = result.final = COLOR_WHITE; + result.inscattering = result.attenuation = COLOR_BLACK; + return result; +} + +Vector3 BaseAtmosphereRenderer::getSunDirection() +{ + AtmosphereDefinition* atmosphere = getDefinition(); + double sun_angle = (atmosphere->_daytime + 0.75) * M_PI * 2.0; + return Vector3(cos(sun_angle), sin(sun_angle), 0.0); +} + +AtmosphereDefinition* BaseAtmosphereRenderer::getDefinition() +{ + return renderer->getScenery()->getAtmosphere(); +} + +void SoftwareBrunetonAtmosphereRenderer::getLightingStatus(LightStatus* status, Vector3 normal, int opaque) +{ + return brunetonGetLightingStatus(renderer, status, normal, opaque); +} + +AtmosphereResult SoftwareBrunetonAtmosphereRenderer::applyAerialPerspective(Vector3 location, Color base) +{ + AtmosphereDefinition* definition = getDefinition(); + AtmosphereResult result; + + /* Get base perspective */ + switch (definition->model) + { + case ATMOSPHERE_MODEL_BRUNETON: + result = brunetonApplyAerialPerspective(renderer, location, base); + break; + default: + ; + } + + /* Apply weather effects */ + _applyWeatherEffects(definition, &result); + + return result; +} + +AtmosphereResult SoftwareBrunetonAtmosphereRenderer::getSkyColor(Vector3 direction) +{ + AtmosphereDefinition* definition; + Vector3 sun_direction, sun_position, camera_location; + Color base; + + definition = getDefinition(); + camera_location = renderer->getCameraLocation(renderer, VECTOR_ZERO); + + sun_direction = getSunDirection(); + direction = v3Normalize(direction); + sun_position = v3Scale(sun_direction, SUN_DISTANCE_SCALED); + + /* Get sun shape */ + base = COLOR_BLACK; + /*if (v3Dot(sun_direction, direction) >= 0) + { + double sun_radius = definition->sun_radius * SUN_RADIUS_SCALED * 5.0; // FIXME Why should we multiply by 5 ? + Vector3 hit1, hit2; + int hits = euclidRayIntersectSphere(camera_location, direction, sun_position, sun_radius, &hit1, &hit2); + if (hits > 1) + { + double dist = v3Norm(v3Sub(hit2, hit1)) / sun_radius; // distance between intersection points (relative to radius) + + Color sun_color = definition->sun_color; + sun_color.r *= 100.0; + sun_color.g *= 100.0; + sun_color.b *= 100.0; + + if (dist <= 0.05) + { + sun_color.r *= 1.0 - dist / 0.05; + sun_color.g *= 1.0 - dist / 0.05; + sun_color.b *= 1.0 - dist / 0.05; + } + base = sun_color; + } + }*/ + + /* TODO Get stars */ + + /* Get scattering */ + AtmosphereResult result; + Vector3 location = v3Add(camera_location, v3Scale(direction, 6421.0)); + switch (definition->model) + { + case ATMOSPHERE_MODEL_BRUNETON: + result = brunetonGetSkyColor(renderer, camera_location, direction, sun_position, base); + break; + default: + result = BaseAtmosphereRenderer::applyAerialPerspective(location, result.base); + } + + /* Apply weather effects */ + _applyWeatherEffects(definition, &result); + + return result; +} diff --git a/src/render/software/AtmosphereRenderer.h b/src/render/software/AtmosphereRenderer.h new file mode 100644 index 0000000..90353df --- /dev/null +++ b/src/render/software/AtmosphereRenderer.h @@ -0,0 +1,41 @@ +#ifndef ATMOSPHERERENDERER_H +#define ATMOSPHERERENDERER_H + +#include "software_global.h" + +// TEMP +#include "atmosphere/public.h" + +namespace paysages { +namespace software { + +class BaseAtmosphereRenderer +{ +public: + BaseAtmosphereRenderer(SoftwareRenderer* renderer); + virtual ~BaseAtmosphereRenderer() {} + + virtual void getLightingStatus(LightStatus* status, Vector3 normal, int opaque); + virtual AtmosphereResult applyAerialPerspective(Vector3 location, Color base); + virtual AtmosphereResult getSkyColor(Vector3 direction); + virtual Vector3 getSunDirection(); + +protected: + virtual AtmosphereDefinition* getDefinition(); + SoftwareRenderer* renderer; +}; + +class SoftwareBrunetonAtmosphereRenderer: public BaseAtmosphereRenderer +{ +public: + SoftwareBrunetonAtmosphereRenderer(SoftwareRenderer* renderer):BaseAtmosphereRenderer(renderer) {} + + virtual void getLightingStatus(LightStatus* status, Vector3 normal, int opaque) override; + virtual AtmosphereResult applyAerialPerspective(Vector3 location, Color base) override; + virtual AtmosphereResult getSkyColor(Vector3 direction) override; +}; + +} +} + +#endif // ATMOSPHERERENDERER_H diff --git a/src/render/software/SoftwareRenderer.cpp b/src/render/software/SoftwareRenderer.cpp index bdc375a..b4afd38 100644 --- a/src/render/software/SoftwareRenderer.cpp +++ b/src/render/software/SoftwareRenderer.cpp @@ -3,9 +3,32 @@ #include "camera.h" #include "Scenery.h" #include "FluidMediumManager.h" +#include "AtmosphereRenderer.h" + + +// Legacy compatibility +static AtmosphereResult _legacyApplyAerialPerspective(Renderer* renderer, Vector3 location, Color base) +{ + return ((SoftwareRenderer*)renderer)->getAtmosphereRenderer()->applyAerialPerspective(location, base); +} +static AtmosphereResult _legacyGetSkyColor(Renderer* renderer, Vector3 direction) +{ + return ((SoftwareRenderer*)renderer)->getAtmosphereRenderer()->getSkyColor(direction); +} +static void _legacyGetLightingStatus(Renderer* renderer, LightStatus* status, Vector3 normal, int opaque) +{ + return ((SoftwareRenderer*)renderer)->getAtmosphereRenderer()->getLightingStatus(status, normal, opaque); +} +static Vector3 _legacyGetSunDirection(Renderer* renderer) +{ + return ((SoftwareRenderer*)renderer)->getAtmosphereRenderer()->getSunDirection(); +} + SoftwareRenderer::SoftwareRenderer(Scenery* scenery) { + atmosphere_renderer = new BaseAtmosphereRenderer(this); + fluid_medium = new FluidMediumManager(this); if (scenery) @@ -21,11 +44,25 @@ SoftwareRenderer::SoftwareRenderer(Scenery* scenery) SoftwareRenderer::~SoftwareRenderer() { + delete atmosphere_renderer; + delete fluid_medium; } -void SoftwareRenderer::initialize() +void SoftwareRenderer::prepare() { + // Prepare sub renderers + delete atmosphere_renderer; + atmosphere_renderer = new SoftwareBrunetonAtmosphereRenderer(this); + + // Setup transitional renderers (for C-legacy subsystems) + atmosphere->applyAerialPerspective = _legacyApplyAerialPerspective; + atmosphere->getSkyColor = _legacyGetSkyColor; + atmosphere->getLightingStatus = _legacyGetLightingStatus; + atmosphere->getSunDirection = _legacyGetSunDirection; + + // Prepare global tools + fluid_medium->clearMedia(); //fluid_medium->registerMedium(water_renderer); } diff --git a/src/render/software/SoftwareRenderer.h b/src/render/software/SoftwareRenderer.h index 09a1ee7..e54a6c1 100644 --- a/src/render/software/SoftwareRenderer.h +++ b/src/render/software/SoftwareRenderer.h @@ -20,9 +20,16 @@ public: SoftwareRenderer(Scenery* scenery=0); virtual ~SoftwareRenderer(); - virtual void initialize(); + /*! + * \brief Prepare the renderer sub-systems. + * + * This will clear the caches and connect elements together. + * After this call, don't update the scenery when renderer is in use. + */ + virtual void prepare(); inline Scenery* getScenery() const {return scenery;} + inline BaseAtmosphereRenderer* getAtmosphereRenderer() const {return atmosphere_renderer;} inline FluidMediumManager* getFluidMediumManager() const {return fluid_medium;} //virtual Color applyMediumTraversal(Vector3 location, Color color) override; @@ -30,6 +37,7 @@ public: private: Scenery* scenery; FluidMediumManager* fluid_medium; + BaseAtmosphereRenderer* atmosphere_renderer; }; } diff --git a/src/render/software/software.pro b/src/render/software/software.pro index a7c0148..8bb3f04 100644 --- a/src/render/software/software.pro +++ b/src/render/software/software.pro @@ -15,12 +15,14 @@ include(../../common.pri) SOURCES += SoftwareRenderer.cpp \ FluidMediumInterface.cpp \ - FluidMediumManager.cpp + FluidMediumManager.cpp \ + AtmosphereRenderer.cpp HEADERS += SoftwareRenderer.h\ software_global.h \ FluidMediumInterface.h \ - FluidMediumManager.h + FluidMediumManager.h \ + AtmosphereRenderer.h unix:!symbian { maemo5 { diff --git a/src/render/software/software_global.h b/src/render/software/software_global.h index 59a1fb7..8b65568 100644 --- a/src/render/software/software_global.h +++ b/src/render/software/software_global.h @@ -14,9 +14,13 @@ namespace paysages { namespace software { class SoftwareRenderer; + class FluidMediumManager; class FluidMediumInterface; class FluidMediumCollector; + + class BaseAtmosphereRenderer; + class SoftwareBrunetonAtmosphereRenderer; } } diff --git a/src/rendering/Scenery.cpp b/src/rendering/Scenery.cpp index e0a71f0..2972046 100644 --- a/src/rendering/Scenery.cpp +++ b/src/rendering/Scenery.cpp @@ -4,14 +4,14 @@ #include "NoiseGenerator.h" #include "PackStream.h" -#include "rendering/atmosphere/public.h" -#include "rendering/camera.h" -#include "rendering/clouds/public.h" -#include "rendering/terrain/public.h" -#include "rendering/textures/public.h" -#include "rendering/water/public.h" -#include "rendering/renderer.h" -#include "rendering/terrain/ter_raster.h" +#include "atmosphere/public.h" +#include "camera.h" +#include "clouds/public.h" +#include "terrain/public.h" +#include "textures/public.h" +#include "water/public.h" +#include "renderer.h" +#include "terrain/ter_raster.h" static Scenery* _main_scenery; static SceneryCustomDataCallback _custom_save = NULL; diff --git a/src/rendering/atmosphere/atm_bruneton.cpp b/src/rendering/atmosphere/atm_bruneton.cpp index 02aabc9..2773f42 100644 --- a/src/rendering/atmosphere/atm_bruneton.cpp +++ b/src/rendering/atmosphere/atm_bruneton.cpp @@ -11,12 +11,12 @@ #include #include "System.h" #include "PackStream.h" -#include "rendering/tools.h" -#include "rendering/tools/cache.h" -#include "rendering/tools/texture.h" -#include "rendering/tools/parallel.h" -#include "rendering/renderer.h" -#include "rendering/water/public.h" +#include "tools.h" +#include "tools/cache.h" +#include "tools/texture.h" +#include "tools/parallel.h" +#include "renderer.h" +#include "water/public.h" /*********************** Constants ***********************/ diff --git a/src/rendering/atmosphere/atm_raster.cpp b/src/rendering/atmosphere/atm_raster.cpp index 8bf1976..4a367e7 100644 --- a/src/rendering/atmosphere/atm_raster.cpp +++ b/src/rendering/atmosphere/atm_raster.cpp @@ -5,7 +5,7 @@ #include #include "../tools.h" #include "../renderer.h" -#include "rendering/clouds/public.h" +#include "clouds/public.h" static Color _postProcessFragment(Renderer* renderer, Vector3 location, void* data) { diff --git a/src/rendering/atmosphere/atm_render.cpp b/src/rendering/atmosphere/atm_render.cpp index 01bb3d9..17ab75e 100644 --- a/src/rendering/atmosphere/atm_render.cpp +++ b/src/rendering/atmosphere/atm_render.cpp @@ -55,138 +55,6 @@ static void _fakeGetLightingStatus(Renderer* renderer, LightStatus* status, Vect lightingPushLight(status, &light); } -/******************** Real ********************/ -static inline double _getDayFactor(double daytime) -{ - daytime = 1.0 - fabs(0.5 - daytime) / 0.5; - return daytime < 0.45 ? 0.0 : sqrt((daytime - 0.45) / 0.55); -} - -static inline void _applyWeatherEffects(AtmosphereDefinition* definition, AtmosphereResult* result) -{ - double distance = result->distance; - double max_distance = 100.0 - 90.0 * definition->humidity; - double distancefactor, dayfactor; - - if (distance > max_distance) - { - distance = max_distance; - } - distancefactor = (distance > max_distance ? max_distance : distance) / max_distance; - /* TODO Get day lighting from model */ - dayfactor = _getDayFactor(definition->_daytime); - - /* Fog masking */ - if (definition->humidity > 0.3) - { - result->mask.r = result->mask.g = result->mask.b = (10.0 - 8.0 * definition->humidity) * dayfactor; - result->mask.a = distancefactor * (definition->humidity - 0.3) / 0.7; - } - - /* Scattering tweaking */ - if (definition->humidity < 0.15) - { - /* Limit scattering on ultra clear day */ - double force = (0.15 - definition->humidity) / 0.15; - colorLimitPower(&result->inscattering, 100.0 - 90.0 * pow(force, 0.1)); - } - else - { - /* Scattering boost */ - double force = 1.2 * (definition->humidity < 0.5 ? sqrt((definition->humidity - 0.15) / 0.35) : 1.0 - (definition->humidity - 0.5) / 0.5); - result->inscattering.r *= 1.0 + force * distancefactor * (definition->humidity - 0.15) / 0.85; - result->inscattering.g *= 1.0 + force * distancefactor * (definition->humidity - 0.15) / 0.85; - result->inscattering.b *= 1.0 + force * distancefactor * (definition->humidity - 0.15) / 0.85; - } - - /* Attenuation */ - result->attenuation.r *= 1.0 - 0.4 * distancefactor * definition->humidity; - result->attenuation.g *= 1.0 - 0.4 * distancefactor * definition->humidity; - result->attenuation.b *= 1.0 - 0.4 * distancefactor * definition->humidity; - - atmosphereUpdateResult(result); -} - -static AtmosphereResult _realApplyAerialPerspective(Renderer* renderer, Vector3 location, Color base) -{ - AtmosphereDefinition* definition = renderer->atmosphere->definition; - AtmosphereResult result; - - /* Get base perspective */ - switch (definition->model) - { - case ATMOSPHERE_MODEL_BRUNETON: - result = brunetonApplyAerialPerspective(renderer, location, base); - break; - default: - ; - } - - /* Apply weather effects */ - _applyWeatherEffects(definition, &result); - - return result; -} - -static AtmosphereResult _realGetSkyColor(Renderer* renderer, Vector3 direction) -{ - AtmosphereDefinition* definition; - Vector3 sun_direction, sun_position, camera_location; - Color base; - - definition = renderer->atmosphere->definition; - camera_location = renderer->getCameraLocation(renderer, VECTOR_ZERO); - - sun_direction = renderer->atmosphere->getSunDirection(renderer); - direction = v3Normalize(direction); - sun_position = v3Scale(sun_direction, SUN_DISTANCE_SCALED); - - /* Get sun shape */ - base = COLOR_BLACK; - /*if (v3Dot(sun_direction, direction) >= 0) - { - double sun_radius = definition->sun_radius * SUN_RADIUS_SCALED * 5.0; // FIXME Why should we multiply by 5 ? - Vector3 hit1, hit2; - int hits = euclidRayIntersectSphere(camera_location, direction, sun_position, sun_radius, &hit1, &hit2); - if (hits > 1) - { - double dist = v3Norm(v3Sub(hit2, hit1)) / sun_radius; // distance between intersection points (relative to radius) - - Color sun_color = definition->sun_color; - sun_color.r *= 100.0; - sun_color.g *= 100.0; - sun_color.b *= 100.0; - - if (dist <= 0.05) - { - sun_color.r *= 1.0 - dist / 0.05; - sun_color.g *= 1.0 - dist / 0.05; - sun_color.b *= 1.0 - dist / 0.05; - } - base = sun_color; - } - }*/ - - /* TODO Get stars */ - - /* Get scattering */ - AtmosphereResult result; - Vector3 location = v3Add(camera_location, v3Scale(direction, 6421.0)); - switch (definition->model) - { - case ATMOSPHERE_MODEL_BRUNETON: - result = brunetonGetSkyColor(renderer, camera_location, direction, sun_position, base); - break; - default: - result = _fakeApplyAerialPerspective(renderer, location, result.base); - } - - /* Apply weather effects */ - _applyWeatherEffects(definition, &result); - - return result; -} - static Vector3 _realGetSunDirection(Renderer* renderer) { Vector3 result; @@ -242,18 +110,6 @@ static void _deleteRenderer(AtmosphereRenderer* renderer) static void _bindRenderer(Renderer* renderer, AtmosphereDefinition* definition) { AtmosphereDefinitionClass.copy(definition, renderer->atmosphere->definition); - - renderer->atmosphere->getSkyColor = _realGetSkyColor; - renderer->atmosphere->applyAerialPerspective = _realApplyAerialPerspective; - - switch (definition->model) - { - case ATMOSPHERE_MODEL_BRUNETON: - renderer->atmosphere->getLightingStatus = brunetonGetLightingStatus; - break; - default: - renderer->atmosphere->getLightingStatus = _fakeGetLightingStatus; - } } StandardRenderer AtmosphereRendererClass = { diff --git a/src/rendering/atmosphere/public.h b/src/rendering/atmosphere/public.h index 65dbbec..2e2dbaa 100644 --- a/src/rendering/atmosphere/public.h +++ b/src/rendering/atmosphere/public.h @@ -77,7 +77,4 @@ RENDERINGSHARED_EXPORT void atmosphereRenderSkydome(Renderer* renderer); RENDERINGSHARED_EXPORT void atmosphereInitResult(AtmosphereResult* result); RENDERINGSHARED_EXPORT void atmosphereUpdateResult(AtmosphereResult* result); -RENDERINGSHARED_EXPORT Renderer* atmosphereCreatePreviewRenderer(); -RENDERINGSHARED_EXPORT Color atmosphereGetPreview(Renderer* renderer, double x, double y, double heading); - #endif diff --git a/src/rendering/camera.cpp b/src/rendering/camera.cpp index 8c9a5af..5b31acd 100644 --- a/src/rendering/camera.cpp +++ b/src/rendering/camera.cpp @@ -7,9 +7,9 @@ #include "PackStream.h" #include "tools.h" #include "tools/boundingbox.h" -#include "rendering/renderer.h" -#include "rendering/terrain/public.h" -#include "rendering/water/public.h" +#include "renderer.h" +#include "terrain/public.h" +#include "water/public.h" class CameraDefinition { diff --git a/src/rendering/clouds/clo_preview.cpp b/src/rendering/clouds/clo_preview.cpp index 7c7dd39..c2eb613 100644 --- a/src/rendering/clouds/clo_preview.cpp +++ b/src/rendering/clouds/clo_preview.cpp @@ -4,7 +4,7 @@ #include "../tools/euclid.h" #include "../renderer.h" #include "../tools.h" -#include "rendering/atmosphere/public.h" +#include "atmosphere/public.h" /* * Clouds previews. diff --git a/src/rendering/clouds/clo_rendering.cpp b/src/rendering/clouds/clo_rendering.cpp index 887e4d7..fa6b1fc 100644 --- a/src/rendering/clouds/clo_rendering.cpp +++ b/src/rendering/clouds/clo_rendering.cpp @@ -6,7 +6,7 @@ #include "../renderer.h" #include "clo_density.h" #include "clo_walking.h" -#include "rendering/atmosphere/public.h" +#include "atmosphere/public.h" /******************** Fake ********************/ static int _fakeAlterLight(Renderer* renderer, LightDefinition* light, Vector3 location) diff --git a/src/rendering/renderer.cpp b/src/rendering/renderer.cpp index bce527b..28c0752 100644 --- a/src/rendering/renderer.cpp +++ b/src/rendering/renderer.cpp @@ -6,12 +6,12 @@ #include "render.h" #include "Scenery.h" #include "tools.h" -#include "rendering/camera.h" -#include "rendering/atmosphere/public.h" -#include "rendering/clouds/public.h" -#include "rendering/terrain/public.h" -#include "rendering/textures/public.h" -#include "rendering/water/public.h" +#include "camera.h" +#include "atmosphere/public.h" +#include "clouds/public.h" +#include "terrain/public.h" +#include "textures/public.h" +#include "water/public.h" static RayCastingResult _RAYCASTING_NULL = {0, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}}; @@ -229,6 +229,8 @@ void rendererStart(Renderer* renderer, RenderParams params) renderSetParams(renderer->render_area, params); renderClear(renderer->render_area); + renderer->prepare(); + renderer->is_rendering = 1; thread.start(renderer); loops = 0; diff --git a/src/rendering/renderer.h b/src/rendering/renderer.h index 512e6a9..f9df721 100644 --- a/src/rendering/renderer.h +++ b/src/rendering/renderer.h @@ -20,6 +20,8 @@ public: Renderer(); virtual ~Renderer(); + virtual void prepare() {} + /* Render base configuration */ int render_quality; int render_width; diff --git a/src/rendering/rendering.pro b/src/rendering/rendering.pro index e9e7343..767a1e4 100644 --- a/src/rendering/rendering.pro +++ b/src/rendering/rendering.pro @@ -8,8 +8,6 @@ DEFINES += RENDERING_LIBRARY include(../common.pri) -INCLUDEPATH += $$PWD/.. - SOURCES += main.cpp \ tools.cpp \ renderer.cpp \ @@ -19,7 +17,6 @@ SOURCES += main.cpp \ camera.cpp \ atmosphere/atm_render.cpp \ atmosphere/atm_raster.cpp \ - atmosphere/atm_preview.cpp \ atmosphere/atm_presets.cpp \ atmosphere/atm_definition.cpp \ atmosphere/atm_bruneton.cpp \ diff --git a/src/rendering/terrain/public.h b/src/rendering/terrain/public.h index 334dfae..9741467 100644 --- a/src/rendering/terrain/public.h +++ b/src/rendering/terrain/public.h @@ -70,7 +70,7 @@ RENDERINGSHARED_EXPORT double terrainGetGridHeight(TerrainDefinition* definition RENDERINGSHARED_EXPORT double terrainGetInterpolatedHeight(TerrainDefinition* definition, double x, double z, int scaled, int with_painting); RENDERINGSHARED_EXPORT size_t terrainGetMemoryStats(TerrainDefinition* definition); -RENDERINGSHARED_EXPORT Renderer* terrainCreatePreviewRenderer(); +RENDERINGSHARED_EXPORT void terrainAlterPreviewRenderer(Renderer* renderer); RENDERINGSHARED_EXPORT Color terrainGetPreviewColor(Renderer* renderer, double x, double z, double detail); RENDERINGSHARED_EXPORT HeightInfo terrainGetHeightInfo(TerrainDefinition* definition); diff --git a/src/rendering/terrain/ter_preview.cpp b/src/rendering/terrain/ter_preview.cpp index 6de9e0a..16bea89 100644 --- a/src/rendering/terrain/ter_preview.cpp +++ b/src/rendering/terrain/ter_preview.cpp @@ -4,8 +4,8 @@ #include "../tools/lighting.h" #include "../renderer.h" #include "NoiseGenerator.h" -#include "rendering/atmosphere/public.h" -#include "rendering/textures/public.h" +#include "atmosphere/public.h" +#include "textures/public.h" /* * Terrain previews. @@ -51,13 +51,11 @@ static Vector3 _getCameraLocation(Renderer* renderer, Vector3 location) return location; } -Renderer* terrainCreatePreviewRenderer() +void terrainAlterPreviewRenderer(Renderer* renderer) { - Renderer* result = rendererCreate(); - - result->render_quality = 3; - result->getCameraLocation = _getCameraLocation; - result->atmosphere->getLightingStatus = _getLightingStatus; + renderer->render_quality = 3; + renderer->getCameraLocation = _getCameraLocation; + renderer->atmosphere->getLightingStatus = _getLightingStatus; TexturesDefinition* textures; textures = (TexturesDefinition*)TexturesDefinitionClass.create(); @@ -71,11 +69,9 @@ Renderer* terrainCreatePreviewRenderer() TexturesDefinitionClass.validate(textures); layer->_detail_noise->clearLevels(); - TexturesRendererClass.bind(result, textures); + TexturesRendererClass.bind(renderer, textures); TexturesDefinitionClass.destroy(textures); - - return result; } Color terrainGetPreviewColor(Renderer* renderer, double x, double z, double detail) diff --git a/src/rendering/terrain/ter_raster.cpp b/src/rendering/terrain/ter_raster.cpp index bfb2f51..04930ca 100644 --- a/src/rendering/terrain/ter_raster.cpp +++ b/src/rendering/terrain/ter_raster.cpp @@ -8,9 +8,9 @@ #include "../tools/boundingbox.h" #include "../tools/parallel.h" #include "../renderer.h" -#include "rendering/water/public.h" -#include "rendering/textures/public.h" -#include "rendering/camera.h" +#include "water/public.h" +#include "textures/public.h" +#include "camera.h" /* * Terrain rasterization. diff --git a/src/rendering/terrain/ter_render.cpp b/src/rendering/terrain/ter_render.cpp index e86d278..4e84d35 100644 --- a/src/rendering/terrain/ter_render.cpp +++ b/src/rendering/terrain/ter_render.cpp @@ -4,7 +4,7 @@ #include #include "../tools.h" #include "../renderer.h" -#include "rendering/textures/public.h" +#include "textures/public.h" /******************** Binding ********************/ static double _fakeGetHeight(Renderer* renderer, double x, double z, int with_painting) diff --git a/src/rendering/textures/public.h b/src/rendering/textures/public.h index 8060d09..8eb6094 100644 --- a/src/rendering/textures/public.h +++ b/src/rendering/textures/public.h @@ -3,9 +3,9 @@ #include "../rendering_global.h" #include "Layers.h" -#include "rendering/tools/zone.h" -#include "rendering/tools/lighting.h" -#include "rendering/terrain/public.h" +#include "tools/zone.h" +#include "tools/lighting.h" +#include "terrain/public.h" #define TEXTURES_MAX_LAYERS 50 diff --git a/src/rendering/textures/tex_preview.cpp b/src/rendering/textures/tex_preview.cpp index 1cedd2e..b5d309b 100644 --- a/src/rendering/textures/tex_preview.cpp +++ b/src/rendering/textures/tex_preview.cpp @@ -2,7 +2,7 @@ #include "private.h" #include "Scenery.h" -#include "rendering/tools.h" +#include "tools.h" void TexturesPreviewLayerCoverage_bind(Renderer* renderer, TexturesDefinition* definition) { diff --git a/src/rendering/textures/tex_preview.h b/src/rendering/textures/tex_preview.h index 457bc88..bee8f4c 100644 --- a/src/rendering/textures/tex_preview.h +++ b/src/rendering/textures/tex_preview.h @@ -1,8 +1,8 @@ #ifndef TEX_PREVIEW_H #define TEX_PREVIEW_H -#include "rendering/renderer.h" -#include "rendering/textures/public.h" +#include "renderer.h" +#include "textures/public.h" /* Single layer coverage */ RENDERINGSHARED_EXPORT void TexturesPreviewLayerCoverage_bind(Renderer* renderer, TexturesDefinition* definition); diff --git a/src/rendering/water/public.h b/src/rendering/water/public.h index d4f6445..1921b0e 100644 --- a/src/rendering/water/public.h +++ b/src/rendering/water/public.h @@ -71,7 +71,7 @@ RENDERINGSHARED_EXPORT extern StandardRenderer WaterRendererClass; RENDERINGSHARED_EXPORT void waterRenderSurface(Renderer* renderer); RENDERINGSHARED_EXPORT void waterAutoPreset(WaterDefinition* definition, WaterPreset preset); -RENDERINGSHARED_EXPORT Renderer* waterCreatePreviewCoverageRenderer(); +RENDERINGSHARED_EXPORT void waterAlterPreviewCoverageRenderer(Renderer* renderer); RENDERINGSHARED_EXPORT Color waterGetPreviewCoverage(Renderer* renderer, double x, double y, double scaling, int highlight_enabled); RENDERINGSHARED_EXPORT Renderer* waterCreatePreviewColorRenderer(); diff --git a/src/rendering/water/wat_preview.cpp b/src/rendering/water/wat_preview.cpp index c739976..c0a1d42 100644 --- a/src/rendering/water/wat_preview.cpp +++ b/src/rendering/water/wat_preview.cpp @@ -4,9 +4,9 @@ #include "../renderer.h" #include "../tools.h" -Renderer* waterCreatePreviewCoverageRenderer() +void waterAlterPreviewCoverageRenderer(Renderer* renderer) { - return terrainCreatePreviewRenderer(); + terrainAlterPreviewRenderer(renderer); } Color waterGetPreviewCoverage(Renderer* renderer, double x, double y, double scaling, int highlight_enabled) diff --git a/src/rendering/water/wat_render.cpp b/src/rendering/water/wat_render.cpp index be0af3c..dce4c96 100644 --- a/src/rendering/water/wat_render.cpp +++ b/src/rendering/water/wat_render.cpp @@ -4,7 +4,7 @@ #include "../tools.h" #include "../renderer.h" #include "NoiseGenerator.h" -#include "rendering/terrain/public.h" +#include "terrain/public.h" static HeightInfo _FAKE_HEIGHT_INFO = {0.0, 0.0, 0.0};