22#ifndef WINTERMUTE_BASE_RENDERER_3D_H
23#define WINTERMUTE_BASE_RENDERER_3D_H
25#include "engines/wintermute/base/gfx/base_renderer.h"
26#include "engines/wintermute/coll_templ.h"
27#include "engines/wintermute/dctypes.h"
29#include "graphics/transform_struct.h"
30#include "graphics/surface.h"
32#if defined(USE_OPENGL_SHADERS)
34#include "graphics/opengl/system_headers.h"
36#include "engines/wintermute/base/gfx/xmath.h"
45class BaseSurfaceOpenGL3D;
51#define DEFAULT_NEAR_PLANE 90.0f
52#define DEFAULT_FAR_PLANE 10000.0f
56 kPostFilterBlackAndWhite,
65 bool getProjectionParams(
float *resWidth,
float *resHeight,
float *layerWidth,
float *layerHeight,
66 float *modWidth,
float *modHeight,
bool *customViewport);
67 virtual int getMaxActiveLights() = 0;
69 bool setAmbientLightColor(uint32 color);
70 bool setDefaultAmbientLightColor();
72 uint32 _ambientLightColor;
73 bool _ambientLightOverride;
75 void dumpData(
const char *filename) {};
77 virtual bool enableShadows() = 0;
78 virtual bool disableShadows() = 0;
79 virtual bool shadowVolumeSupported() = 0;
80 virtual bool invalidateTexture(
BaseSurface *texture) = 0;
82 virtual void setSpriteBlendMode(Graphics::TSpriteBlendMode blendMode,
bool forceChange =
false) = 0;
84 virtual bool invalidateDeviceObjects() = 0;
85 virtual bool restoreDeviceObjects() = 0;
87 bool fade(uint16 alpha)
override;
89 uint32 color,
bool alphaDisable, Graphics::TSpriteBlendMode blendMode,
bool mirrorX,
bool mirrorY);
91 float angle, uint32 color,
bool alphaDisable, Graphics::TSpriteBlendMode blendMode,
bool mirrorX,
bool mirrorY) = 0;
93 virtual bool resetDevice() = 0;
94 void initLoop()
override;
95 bool windowedBlt()
override;
97 virtual bool startSpriteBatch()
override = 0;
98 virtual bool endSpriteBatch()
override = 0;
99 virtual bool commitSpriteBatch() = 0;
104 virtual void lightEnable(
int index,
bool enable) = 0;
105 virtual void setLightParameters(
int index,
const DXVector3 &position,
const DXVector3 &direction,
106 const DXVector4 &diffuse,
bool spotlight) = 0;
108 virtual void enableCulling() = 0;
109 virtual void disableCulling() = 0;
113 void setWindowed(
bool windowed)
override;
114 void onWindowChange()
override;
118 virtual bool setWorldTransform(
const DXMatrix &transform) = 0;
119 virtual bool setViewTransform(
const DXMatrix &transform) = 0;
120 virtual bool setProjectionTransform(
const DXMatrix &transform) = 0;
122 void getWorldTransform(
DXMatrix *transform) {
123 *transform = _worldMatrix;
126 void getViewTransform(
DXMatrix *transform) {
127 *transform = _viewMatrix;
130 void getProjectionTransform(DXMatrix *transform) {
131 *transform = _projectionMatrix;
134 virtual Mesh3DS *createMesh3DS() = 0;
135 virtual XMesh *createXMesh() = 0;
136 virtual ShadowVolume *createShadowVolume() = 0;
139 virtual void renderSceneGeometry(
const BaseArray<AdWalkplane *> &planes,
const BaseArray<AdBlock *> &blocks,
140 const BaseArray<AdGeneric *> &generics,
const BaseArray<Light3D *> &lights, Camera3D *camera) = 0;
141 virtual void renderShadowGeometry(
const BaseArray<AdWalkplane *> &planes,
const BaseArray<AdBlock *> &blocks,
const BaseArray<AdGeneric *> &generics, Camera3D *camera) = 0;
143 virtual void displaySimpleShadow(BaseObject *
object) = 0;
145 virtual void postfilter() = 0;
146 virtual void setPostfilter(PostFilter postFilter) = 0;
149 bool forcedFlip()
override;
150 virtual bool setViewport3D(
DXViewport *viewport) = 0;
152 void invalidateLastTexture() {
153 _lastTexture =
nullptr;
156 void endSaveLoad()
override;
158 void setBrightnessOknytt(int32 brightness) {
159 _brightnessOknytt = brightness;
161 float getBrightnessOknytt() {
162 return _brightnessOknytt;
164 void setBrightnessJulia(
float brightness) {
165 _brightnessJulia = brightness;
171 DXMatrix _worldMatrix;
172 DXMatrix _viewMatrix;
173 DXMatrix _projectionMatrix;
174 DXViewport _viewport{};
176 float _nearClipPlane;
178 TRendererState _state;
179 PostFilter _postFilterMode;
180 bool _flipInProgress;
181 int32 _brightnessOknytt;
182 float _brightnessJulia;
184 virtual void setAmbientLightRenderState() = 0;
Definition: base_game.h:79
Definition: base_renderer3d.h:60
bool indicatorFlip(int32 x, int32 y, int32 width, int32 height) override
bool fade(uint16 alpha) override
Definition: base_renderer.h:53
Definition: base_surface.h:37
Definition: 3dcamera.h:38