Lighten the shadows, remove some debug code.

This commit is contained in:
Andrzej Kapolka 2013-11-21 12:29:22 -08:00
parent cb64103e05
commit f0e5872b89
4 changed files with 28 additions and 31 deletions

View file

@ -0,0 +1,16 @@
#version 120
//
// shadow_map.frag
// fragment shader
//
// Created by Andrzej Kapolka on 11/21/13.
// Copyright (c) 2013 High Fidelity, Inc. All rights reserved.
//
uniform sampler2DShadow shadowMap;
void main(void) {
gl_FragColor = gl_Color * mix(vec4(0.8, 0.8, 0.8, 1.0), vec4(1.0, 1.0, 1.0, 1.0),
shadow2D(shadowMap, gl_TexCoord[0].stp));
}

View file

@ -2782,7 +2782,7 @@ void Application::updateShadowMap() {
glm::vec3 lightDirection = -getSunDirection();
glm::quat rotation = glm::inverse(rotationBetween(IDENTITY_FRONT, lightDirection));
glm::vec3 translation = glm::vec3();
float nearScale = 0.0f; // (1.0f - _viewFrustum.getNearClip()) / (_viewFrustum.getFarClip() - _viewFrustum.getNearClip());
float nearScale = 0.0f;
float farScale = (2.0f - _viewFrustum.getNearClip()) / (_viewFrustum.getFarClip() - _viewFrustum.getNearClip());
loadViewFrustum(_myCamera, _viewFrustum);
glm::vec3 points[] = {
@ -2794,13 +2794,6 @@ void Application::updateShadowMap() {
rotation * (glm::mix(_viewFrustum.getNearTopRight(), _viewFrustum.getFarTopRight(), farScale) + translation),
rotation * (glm::mix(_viewFrustum.getNearBottomLeft(), _viewFrustum.getFarBottomLeft(), farScale) + translation),
rotation * (glm::mix(_viewFrustum.getNearBottomRight(), _viewFrustum.getFarBottomRight(), farScale) + translation) };
/* glm::vec3 points[] = {
rotation * (_myAvatar.getPosition() + glm::vec3(-1, 0, 0) + translation),
rotation * (_myAvatar.getPosition() + glm::vec3(1, 0, 0) + translation),
rotation * (_myAvatar.getPosition() + glm::vec3(0, -1, 0) + translation),
rotation * (_myAvatar.getPosition() + glm::vec3(0, 1, 0) + translation),
rotation * (_myAvatar.getPosition() + glm::vec3(0, 0, -1) + translation),
rotation * (_myAvatar.getPosition() + glm::vec3(0, 0, 1) + translation) }; */
glm::vec3 minima(FLT_MAX, FLT_MAX, FLT_MAX), maxima(-FLT_MAX, -FLT_MAX, -FLT_MAX);
for (int i = 0; i < sizeof(points) / sizeof(points[0]); i++) {
minima = glm::min(minima, points[i]);
@ -3391,29 +3384,6 @@ void Application::displayOverlay() {
// render the webcam input frame
_webcam.renderPreview(_glWidget->width(), _glWidget->height());
if (Menu::getInstance()->isOptionChecked(MenuOption::Shadows) && false) {
glBindTexture(GL_TEXTURE_2D, _textureCache.getShadowFramebufferObject()->texture());
glEnable(GL_TEXTURE_2D);
glColor3f(1.0f, 1.0f, 1.0f);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(500, 500);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(1000, 500);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(1000, 0);
glTexCoord2f(0.0f, 1.0f);
glVertex2f(500, 0);
glEnd();
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
}
_palette.render(_glWidget->width(), _glWidget->height());
QAction* paintColorAction = NULL;

View file

@ -519,6 +519,13 @@ void VoxelSystem::initVoxelMemory() {
_perlinModulateProgram.bind();
_perlinModulateProgram.setUniformValue("permutationNormalTexture", 0);
_perlinModulateProgram.release();
_shadowMapProgram.addShaderFromSourceFile(QGLShader::Fragment, "resources/shaders/shadow_map.frag");
_shadowMapProgram.link();
_shadowMapProgram.bind();
_shadowMapProgram.setUniformValue("shadowMap", 0);
_shadowMapProgram.release();
}
}
@ -1080,6 +1087,7 @@ glm::vec3 VoxelSystem::computeVoxelVertex(const glm::vec3& startVertex, float vo
}
ProgramObject VoxelSystem::_perlinModulateProgram;
ProgramObject VoxelSystem::_shadowMapProgram;
void VoxelSystem::init() {
if (_initialized) {
@ -1388,6 +1396,7 @@ void VoxelSystem::render(bool texture) {
void VoxelSystem::applyScaleAndBindProgram(bool texture) {
if (Menu::getInstance()->isOptionChecked(MenuOption::Shadows)) {
_shadowMapProgram.bind();
glBindTexture(GL_TEXTURE_2D, Application::getInstance()->getTextureCache()->getShadowDepthTextureID());
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
@ -1412,6 +1421,7 @@ void VoxelSystem::removeScaleAndReleaseProgram(bool texture) {
glPopMatrix();
if (Menu::getInstance()->isOptionChecked(MenuOption::Shadows)) {
_shadowMapProgram.release();
glBindTexture(GL_TEXTURE_2D, 0);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);

View file

@ -282,6 +282,7 @@ private:
bool _voxelsDirty;
static ProgramObject _perlinModulateProgram;
static ProgramObject _shadowMapProgram;
int _hookID;
std::vector<glBufferIndex> _freeIndexes;