first works of omni shadows

This commit is contained in:
2023-02-16 16:57:29 +03:00
parent 69caa98d04
commit 3c9386de63
7 changed files with 328 additions and 54 deletions

View File

@@ -57,7 +57,8 @@ class QGLENGINE_CORE_EXPORT Renderer: public RendererBase {
srLightSpotPass,
srFinalPass,
srTonemapPass,
srShadowPass,
srShadowConePass,
srShadowOmniPass,
};
enum OutBufferRole {
obrSolidOmni,
@@ -112,7 +113,10 @@ protected:
void fillObjectsBuffer(const ObjectBaseList & ol, RenderPass pass);
void renderObjects(Scene & scene, RenderPass pass);
void renderLight(int first_wr_buff, bool clear_only);
void renderShadow(int index, Light * light);
void renderConeShadows();
void renderOmniShadows();
void renderConeShadow(int index, Light * light);
void renderOmniShadow(int index, Light * light, QOpenGLShaderProgram * prog, QMatrix4x4 om);
bool bindShader(ShaderRole role, QOpenGLShaderProgram ** ret = 0);
bool bindShader(QOpenGLShaderProgram * sp);
@@ -124,7 +128,7 @@ protected:
private:
float gamma_ = 1.f;
int camera_light_mode, cur_write_plane = 0, prev_write_plane = 0;
bool edit_mode, need_init_shaders, need_render_sum;
bool edit_mode, need_init_shaders, need_render_sum, __reinit_debug;
Framebuffer fbo_ds, fbo_out;
QMap<ShaderRole, QString> shader_files;
QMap<ShaderRole, QStringList> shader_defines;
@@ -143,6 +147,8 @@ private:
QPoint mouse_pos;
QRect mouse_rect;
QMatrix4x4 prev_view, prev_proj;
QMatrix4x4 mat_norm_to_tex_coord, mat_camera_fullview_inv, mat_proj_90;
QMatrix4x4 mat_faces[6];
QMatrix3x3 nm;
QVector4D corner_dirs[4];
QVector<QVector3D> hcontent;
@@ -150,8 +156,7 @@ private:
QVector<FramebufferEffectBase *> fb_effects;
QImage last_img;
QString timings;
bool is_grabbing = false;
QFunctionPointer framebufferTextureLayer = nullptr;
bool is_grabbing = false;
};
#endif // RENDERER_H