git-svn-id: svn://db.shs.com.ru/libs@703 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -30,7 +30,7 @@ using namespace QGLEngineShaders;
|
||||
Renderer::Renderer(QGLView * view_): RendererBase(view_),
|
||||
fbo_ds (view_, QVector<GLenum>() << GL_RGBA16F << GL_RGBA32F << GL_RGBA16F << GL_RGBA16F << GL_RGBA16F),
|
||||
fbo_out (view_, obrBuffersCount, false, GL_RGBA16F),
|
||||
rend_mat(this), rend_service(this), rend_selection(this), tone_proc(this) {
|
||||
rend_mat(this), rend_service(this), rend_selection(this), tone_proc(this), tex_env(view_, 512) {
|
||||
quad = Primitive::plane(2., 2.);
|
||||
cam_light = new Light();
|
||||
cam_light->intensity = 0.75;
|
||||
@@ -69,7 +69,8 @@ Renderer::Renderer(QGLView * view_): RendererBase(view_),
|
||||
<< ShaderPair("dof", &shader_dof);*/
|
||||
shader_fxaa = 0;
|
||||
gamma_ = 1.;
|
||||
edit_mode = need_init_shaders = is_camera_light = true;
|
||||
edit_mode = need_init_shaders = true;
|
||||
camera_light_mode = QGLView::clmAuto;
|
||||
}
|
||||
|
||||
|
||||
@@ -90,6 +91,7 @@ void Renderer::init(int width, int height) {
|
||||
initQuad(quad);
|
||||
initTextureArrays();
|
||||
initCoeffTextures();
|
||||
tex_env.init();
|
||||
need_init_shaders = true;
|
||||
}
|
||||
|
||||
@@ -158,6 +160,7 @@ void Renderer::initShaders() {
|
||||
prog->setUniformValue(QString("tex_%1").arg(i).toLatin1().constData(), i);
|
||||
prog->setUniformValue("tex_coeffs[0]", (int)Renderer::dbrBuffersCount);
|
||||
//prog->setUniformValue("tex_coeffs[1]", (int)Renderer::dbrBuffersCount+1);
|
||||
prog->setUniformValue("tex_env", (int)Renderer::dbrBuffersCount+1);
|
||||
}
|
||||
if (bindShader(srFinalPass, &prog)) {
|
||||
prog->setUniformValue("tex_g1" , 0);
|
||||
@@ -238,6 +241,7 @@ void Renderer::renderLight(int first_wr_buff, bool clear_only) {
|
||||
}
|
||||
fbo_ds.bindColorTextures();
|
||||
fbo_out.bind();
|
||||
tex_env.bind((int)Renderer::dbrBuffersCount+1);
|
||||
//int ri = 1, wi = 0;
|
||||
typedef QPair<Renderer::ShaderRole, Light::Type> PassPair;
|
||||
QVector<PassPair> passes;
|
||||
@@ -256,6 +260,7 @@ void Renderer::renderLight(int first_wr_buff, bool clear_only) {
|
||||
prog->setUniformValue("fog_color", view->fogColor_);
|
||||
prog->setUniformValue("fog_decay", qMax(view->fogDecay_, 0.001f));
|
||||
prog->setUniformValue("fog_density", view->fogDensity_);
|
||||
prog->setUniformValue("view_mat", cam->viewMatrix().inverted().toGenericMatrix<3,3>());
|
||||
renderQuad(prog, quad, cam);
|
||||
}
|
||||
}
|
||||
@@ -264,6 +269,7 @@ void Renderer::renderLight(int first_wr_buff, bool clear_only) {
|
||||
|
||||
void Renderer::renderScene() {
|
||||
initShaders();
|
||||
tex_env.load();
|
||||
QOpenGLExtraFunctions * f = view;
|
||||
Scene & scene(*(view->scene_));
|
||||
Camera * cam = view->camera();
|
||||
@@ -289,7 +295,10 @@ void Renderer::renderScene() {
|
||||
|
||||
/// lights
|
||||
cur_lights = scene.lights_used;
|
||||
if (is_camera_light) {
|
||||
bool use_camlight = (camera_light_mode == QGLView::clmOn);
|
||||
if ((camera_light_mode == QGLView::clmAuto) && cur_lights.isEmpty())
|
||||
use_camlight = true;
|
||||
if (use_camlight) {
|
||||
cur_lights[Light::Omni] << cam_light;
|
||||
cam_light->setPos(cam->pos());
|
||||
}
|
||||
@@ -367,7 +376,7 @@ void Renderer::renderScene() {
|
||||
}
|
||||
|
||||
|
||||
void Renderer::setCameraLightOn(bool on) {
|
||||
is_camera_light = on;
|
||||
void Renderer::setCameraLightMode(int m) {
|
||||
camera_light_mode = m;
|
||||
view->scene()->setLightsChanged();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user