git-svn-id: svn://db.shs.com.ru/libs@627 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user