shadows global switch
This commit is contained in:
@@ -31,6 +31,8 @@
|
||||
#include <piqt.h>
|
||||
#include <qad_types.h>
|
||||
|
||||
#define SHADERS_DIR ":"
|
||||
|
||||
|
||||
using namespace QGLEngineShaders;
|
||||
|
||||
@@ -167,7 +169,7 @@ void Renderer::reloadShaders() {
|
||||
shader_fxaa = nullptr;
|
||||
if (tone_proc.shader_sum) delete tone_proc.shader_sum;
|
||||
tone_proc.shader_sum = nullptr;
|
||||
QString dir = ":/shaders/";
|
||||
QString dir = SHADERS_DIR "/shaders/";
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
loadShadersMulti(shaders[it.key()], dir + it.value(), true, shader_defines.value(it.key()), obr_defines);
|
||||
@@ -352,8 +354,10 @@ void Renderer::renderLight(int first_wr_buff, bool clear_only) {
|
||||
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>());
|
||||
prog->setUniformValue("shadow_size", view->shadow_map_size);
|
||||
prog->setUniformValue("noise_size", noise_size);
|
||||
prog->setUniformValue("shadows_enabled", view->shadows());
|
||||
if (view->shadows()) {
|
||||
prog->setUniformValue("shadow_size", view->shadow_map_size);
|
||||
prog->setUniformValue("soft_shadows_enabled", view->soft_shadows);
|
||||
prog->setUniformValue("soft_shadows_samples", view->soft_shadows_samples);
|
||||
prog->setUniformValue("soft_shadows_quality", view->soft_shadows_quality);
|
||||
@@ -370,6 +374,7 @@ void Renderer::renderLight(int first_wr_buff, bool clear_only) {
|
||||
view->glTexParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_MAG_FILTER, filter);
|
||||
depth_maps_cone.bind(view, tarDepthsCone);
|
||||
depth_maps_omni.bind(view, tarDepthsOmni);
|
||||
}
|
||||
renderQuad(prog, quad, cam);
|
||||
}
|
||||
}
|
||||
@@ -522,6 +527,7 @@ void Renderer::renderScene() {
|
||||
}
|
||||
phase.end();
|
||||
|
||||
if (view->shadows()) {
|
||||
/// cone shadows and shadow matrix
|
||||
phase.begin("shadows cone");
|
||||
renderConeShadows();
|
||||
@@ -531,6 +537,7 @@ void Renderer::renderScene() {
|
||||
phase.begin("shadows omni");
|
||||
renderOmniShadows();
|
||||
phase.end();
|
||||
}
|
||||
|
||||
/// lights
|
||||
phase.begin("lights prepare");
|
||||
@@ -666,11 +673,12 @@ void Renderer::renderScene() {
|
||||
fbo_out.release();
|
||||
|
||||
/// apply hovers and selection frame
|
||||
phase.begin("service");
|
||||
if (edit_mode) {
|
||||
phase.begin("service");
|
||||
rend_selection.drawSelection(fbo_out, cur_write_plane);
|
||||
rend_service.renderService();
|
||||
} else {
|
||||
phase.begin("blit to screen");
|
||||
fbo_out.blit(cur_write_plane, 0, 0, fbo_out.rect(), QRect(QPoint(), view->pixelSize()));
|
||||
}
|
||||
phase.end();
|
||||
|
||||
@@ -46,6 +46,7 @@ QGLView::QGLView(): OpenGLWindow(), renderer_(this), mouse(this) {
|
||||
soft_shadows_quality = 1.;
|
||||
soft_shadows_samples = 32;
|
||||
soft_shadows = false;
|
||||
shadows_ = false;
|
||||
fps_tm = fps_ = 0.;
|
||||
fogColor_ = Qt::darkGray;
|
||||
fogDensity_ = 0.;
|
||||
|
||||
@@ -173,6 +173,8 @@ public:
|
||||
void setSoftShadowsQuality(float s) { soft_shadows_quality = s; }
|
||||
bool softShadows() const { return soft_shadows; }
|
||||
void setSoftShadows(bool on) { soft_shadows = on; }
|
||||
bool shadows() const { return shadows_; }
|
||||
void setShadows(bool on) { shadows_ = on; }
|
||||
|
||||
GLfloat aspect, iaspect;
|
||||
Renderer renderer_;
|
||||
@@ -218,7 +220,7 @@ private:
|
||||
bool fogEnabled_, lightEnabled_, FXAA_;
|
||||
bool shaders_supported, shaders_bind;
|
||||
bool hoverHalo_, selectionHalo_;
|
||||
bool is_init, soft_shadows;
|
||||
bool is_init, shadows_, soft_shadows;
|
||||
|
||||
private slots:
|
||||
void __destroyed();
|
||||
|
||||
@@ -64,6 +64,7 @@ void ViewEditor::assignQGLView(QGLView * v) {
|
||||
ui->colorFogBack->setColor(view->fogColor());
|
||||
ui->spinFogDecay->setValue(view->fogDecay());
|
||||
ui->spinFogDensity->setValue(view->fogDensity());
|
||||
ui->groupShadows->setChecked(view->shadows());
|
||||
ui->checkSoftShadows->setChecked(view->softShadows());
|
||||
ui->spinSoftShadowSamples->setValue(view->softShadowsSamples());
|
||||
ui->spinSoftShadowQuality->setValue(view->softShadowsQuality());
|
||||
@@ -115,6 +116,12 @@ void ViewEditor::on_comboViewRenderMode_currentIndexChanged(int val) {
|
||||
}
|
||||
|
||||
|
||||
void ViewEditor::on_groupShadows_clicked(bool val) {
|
||||
if (!view || !active) return;
|
||||
view->setShadows(val);
|
||||
}
|
||||
|
||||
|
||||
void ViewEditor::on_groupHalos_clicked(bool val) {
|
||||
if (!view || !active) return;
|
||||
view->setHoverHaloEnabled(val && ui->checkHoverHalo->isChecked());
|
||||
|
||||
@@ -47,6 +47,7 @@ private slots:
|
||||
void on_spinDepthStart_valueChanged(double val);
|
||||
void on_spinViewGamma_valueChanged(double val);
|
||||
void on_comboViewRenderMode_currentIndexChanged(int val);
|
||||
void on_groupShadows_clicked(bool val);
|
||||
void on_groupHalos_clicked(bool val);
|
||||
void on_checkHoverHalo_clicked(bool val);
|
||||
void on_checkSelectionHalo_clicked(bool val);
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>453</width>
|
||||
<height>807</height>
|
||||
<height>885</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
@@ -205,31 +205,28 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="checkSoftShadows">
|
||||
<property name="text">
|
||||
<string>Soft shadows</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupShadows">
|
||||
<property name="title">
|
||||
<string>Shadows</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<property name="labelAlignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>Soft shadow samples:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<item row="1" column="1">
|
||||
<widget class="SpinSlider" name="spinSoftShadowSamples">
|
||||
<property name="minimum">
|
||||
<double>1.000000000000000</double>
|
||||
@@ -245,14 +242,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>Soft shadow quality:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<item row="2" column="1">
|
||||
<widget class="SpinSlider" name="spinSoftShadowQuality">
|
||||
<property name="minimum">
|
||||
<double>0.100000000000000</double>
|
||||
@@ -268,7 +265,18 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="checkSoftShadows">
|
||||
<property name="text">
|
||||
<string>Soft shadows</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupCamera">
|
||||
|
||||
Reference in New Issue
Block a user