git-svn-id: svn://db.shs.com.ru/libs@627 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2019-11-22 20:22:30 +00:00
parent 09248aae34
commit e65ee56ee4
21 changed files with 527 additions and 208 deletions

View File

@@ -22,6 +22,7 @@
#include "renderer_base.h"
#include "renderer_material.h"
#include "renderer_service.h"
#include "renderer_selection.h"
#include <QQueue>
@@ -29,6 +30,7 @@ class Renderer: public RendererBase {
friend class QGLView;
friend class RendererMaterial;
friend class RendererService;
friend class RendererSelection;
enum RenderPass {
rpSolid,
rpTransparent,
@@ -44,7 +46,8 @@ class Renderer: public RendererBase {
srSelectionFrame,
// Service
srService,
srServiceFill,
srServiceFrame,
// Deferred shading
srGeometryPass,
@@ -58,12 +61,6 @@ class Renderer: public RendererBase {
dbrEmissionBitangX,
dbrSpeedBitangXY,
};
enum SelectionBufferRole {
sbrSrcHover,
sbrSrcSelect,
sbrHovered,
sbrSelected
};
public:
Renderer(QGLView * view_);
@@ -80,22 +77,18 @@ public:
void recreateMaterialThumbnails(bool force_all = false) {rend_mat.recreateMaterialThumbnails(force_all);}
protected:
void generateObjectsID(Scene & scene);
void fillSelectionsBuffer(const QList<ObjectBase *> & ol);
void fillObjectsBuffer(const QList<ObjectBase*> & ol, RenderPass pass);
void reloadObjects();
void renderObjects(Scene & scene, RenderPass pass);
void renderSelection(Scene & scene);
void renderSelectionFrame();
bool bindShader(ShaderRole role, QOpenGLShaderProgram ** ret = 0);
void initShaders();
void releaseShader();
private:
float exposure_, line_thick_;
bool edit_mode, proc_sel_pbo, need_init_shaders, is_camera_light;
Framebuffer fbo_selection, fbo_ds, fbo_out, fbo_hsmall;
float exposure_;
bool edit_mode, need_init_shaders, is_camera_light;
Framebuffer fbo_ds, fbo_out, fbo_hsmall;
/*QOpenGLShaderProgram * shader_fxaa, * shader_ds_0, * shader_ds_1, * shader_hdr, * shader_small;
QOpenGLShaderProgram * shader_bloom_0, * shader_bloom_1, * shader_motion_blur, * shader_fbo_add;
QOpenGLShaderProgram * shader_shadow, * shader_ssr, * shader_ssr_blur, * shader_ssr_merge;
@@ -105,12 +98,11 @@ private:
RendererMaterial rend_mat;
RendererService rend_service;
RendererSelection rend_selection;
Mesh * quad, * sel_frame;
Mesh * quad;
Light * cam_light;
QHash<uint, ObjectBase * > ids;
uint id_hover;
QPoint mouse_pos;
QRect mouse_rect;
QMatrix4x4 prev_view, prev_proj;