Merged from master. Get rid of redundant GL fog states. Moved local light parameters to shader uniform arrays.

This commit is contained in:
TonyPeng 2014-07-09 13:27:42 -07:00
parent 56eadcb0dc
commit ef4b95c6e0
12 changed files with 16 additions and 15 deletions

View file

@ -23,19 +23,19 @@ function keyPressEvent(event) {
if (event.text == "1") {
currentSelection = 0;
print("selection = " + currentSelection);
print("light election = " + currentSelection);
}
else if (event.text == "2" ) {
currentSelection = 1;
print("selection = " + currentSelection);
print("light selection = " + currentSelection);
}
else if (event.text == "3" ) {
currentSelection = 2;
print("selection = " + currentSelection);
print("light selection = " + currentSelection);
}
else if (event.text == "4" ) {
currentSelection = 3;
print("selection = " + currentSelection);
print("light selection = " + currentSelection);
}
else if (event.text == "5" ) {
localLightColors[currentSelection].x += 0.01;

View file

@ -16,7 +16,7 @@
uniform sampler2D diffuseMap;
// local lights
const int MAX_LOCAL_LIGHTS = 2; // 2 lights for now, will probably need more later on
const int MAX_LOCAL_LIGHTS = 2; // 2 lights for now, will probably need more later on
uniform int numLocalLights;
uniform vec3 localLightDirections[MAX_LOCAL_LIGHTS];
uniform vec3 localLightColors[MAX_LOCAL_LIGHTS];

View file

@ -39,3 +39,4 @@ void main(void) {
// use standard pipeline transform
gl_Position = ftransform();
}

View file

@ -12,6 +12,7 @@
//
const int MAX_LOCAL_LIGHTS = 2;
uniform int numLocalLights;
uniform vec3 localLightDirections[MAX_LOCAL_LIGHTS];
uniform vec3 localLightColors[MAX_LOCAL_LIGHTS];
@ -35,7 +36,7 @@ void main(void) {
// the local light that is always present
vec4 totalLocalLight = vec4(0.0, 0.0, 0.0, 1.0);
for (int i = 0; i < MAX_LOCAL_LIGHTS; i++) {
for (int i = 0; i < numLocalLights; i++) {
float localDiffuse = dot(normalizedNormal, vec4(localLightDirections[i], 1.0));
float localLight = step(0.0, localDiffuse);
float localLightVal = localDiffuse * localLight;

View file

@ -13,7 +13,6 @@
const int MAX_CLUSTERS = 128;
const int INDICES_PER_VERTEX = 4;
const int MAX_LOCAL_LIGHTS = 4;
uniform mat4 clusterMatrices[MAX_CLUSTERS];

View file

@ -86,7 +86,7 @@ void Avatar::init() {
for (int i = 0; i < MAX_LOCAL_LIGHTS; i++) {
_localLightColors[i] = glm::vec3(0.0f, 0.0f, 0.0f);
_localLightDirections[i] = glm::vec3(0.0f, 0.0f, 1.0f);
_localLightDirections[i] = glm::vec3(0.0f, 0.0f, 0.0f);
}
glm::vec3 darkGrayColor(0.3f, 0.3f, 0.3f);

View file

@ -184,7 +184,7 @@ protected:
// always-present local lighting for the avatar
glm::vec3 _localLightDirections[MAX_LOCAL_LIGHTS];
glm::vec3 _localLightColors[MAX_LOCAL_LIGHTS];
int _numLocalLights;
int _numLocalLights;
// protected methods...
glm::vec3 getBodyRightDirection() const { return getOrientation() * IDENTITY_RIGHT; }

View file

@ -1489,7 +1489,7 @@ void Model::renderMeshes(float alpha, RenderMode mode, bool translucent, bool re
program->setUniform(skinLocations->shadowDistances, Application::getInstance()->getShadowDistances());
}
// local light
// local light uniforms
skinProgram->setUniformValue("numLocalLights", _numLocalLights);
skinProgram->setUniformArray("localLightDirections", _localLightDirections, MAX_LOCAL_LIGHTS);
skinProgram->setUniformArray("localLightColors", _localLightColors, MAX_LOCAL_LIGHTS);

View file

@ -166,8 +166,8 @@ protected:
glm::vec3 _localLightDirections[MAX_LOCAL_LIGHTS];
glm::vec3 _localLightColors[MAX_LOCAL_LIGHTS];
int _numLocalLights;
int _numLocalLights;
QVector<JointState> _jointStates;
class MeshState {

View file

@ -26,7 +26,7 @@ void ProgramObject::setUniform(const char* name, const glm::vec3& value) {
void ProgramObject::setUniformArray(const char* name, const glm::vec3* values, int count) {
GLfloat* floatVal = new GLfloat[count*3];
int index = 0;
for(int i = 0; i < count; i++) {
for (int i = 0; i < count; i++) {
assert(index < count*3);
const float* valPtr = glm::value_ptr(values[i]);
floatVal[index++] = valPtr[0];

View file

@ -23,7 +23,7 @@ public:
void setUniform(int location, const glm::vec3& value);
void setUniform(const char* name, const glm::vec3& value);
void setUniformArray(const char* name, const glm::vec3* values, int count);
void setUniformArray(const char* name, const glm::vec3* values, int count);
};
#endif // hifi_ProgramObject_h

View file

@ -540,7 +540,7 @@ void VoxelSystem::initVoxelMemory() {
_readArraysLock.unlock();
// fog for haze
if(_drawHaze) {
if (_drawHaze) {
GLfloat fogColor[] = {_hazeColor.x, _hazeColor.y, _hazeColor.z, 1.0f};
glFogi(GL_FOG_MODE, GL_LINEAR);
glFogfv(GL_FOG_COLOR, fogColor);