trying to debug the indirect sh lighting going wrong, the noraml on avatar is not correct

This commit is contained in:
Sam Gateau 2015-04-06 10:17:31 -07:00
parent 10269bd556
commit ecdffadcb7
6 changed files with 16 additions and 16 deletions

View file

@ -2996,6 +2996,8 @@ void Application::displaySide(Camera& theCamera, bool selfAvatarOnly, RenderArgs
"Application::displaySide() ... entities..."); "Application::displaySide() ... entities...");
if (renderCollisionHulls) { if (renderCollisionHulls) {
_entities.render(RenderArgs::DEBUG_RENDER_MODE, renderSide); _entities.render(RenderArgs::DEBUG_RENDER_MODE, renderSide);
} else if (theCamera.getMode() == CAMERA_MODE_MIRROR) {
_entities.render(RenderArgs::MIRROR_RENDER_MODE, renderSide);
} else { } else {
_entities.render(RenderArgs::DEFAULT_RENDER_MODE, renderSide); _entities.render(RenderArgs::DEFAULT_RENDER_MODE, renderSide);
} }

View file

@ -528,10 +528,10 @@ void Avatar::simulateAttachments(float deltaTime) {
} }
void Avatar::renderAttachments(RenderArgs::RenderMode renderMode, RenderArgs* args) { void Avatar::renderAttachments(RenderArgs::RenderMode renderMode, RenderArgs* args) {
RenderArgs::RenderMode modelRenderMode = (renderMode == RenderArgs::SHADOW_RENDER_MODE) ? // RenderArgs::RenderMode modelRenderMode = (renderMode == RenderArgs::SHADOW_RENDER_MODE) ?
RenderArgs::SHADOW_RENDER_MODE : RenderArgs::DEFAULT_RENDER_MODE; // RenderArgs::SHADOW_RENDER_MODE : RenderArgs::DEFAULT_RENDER_MODE;
foreach (Model* model, _attachmentModels) { foreach (Model* model, _attachmentModels) {
model->render(1.0f, modelRenderMode, args); model->render(1.0f, renderMode, args);
} }
} }

View file

@ -1401,12 +1401,12 @@ void MyAvatar::renderAttachments(RenderArgs::RenderMode renderMode, RenderArgs*
} }
const FBXGeometry& geometry = _skeletonModel.getGeometry()->getFBXGeometry(); const FBXGeometry& geometry = _skeletonModel.getGeometry()->getFBXGeometry();
QString headJointName = (geometry.headJointIndex == -1) ? QString() : geometry.joints.at(geometry.headJointIndex).name; QString headJointName = (geometry.headJointIndex == -1) ? QString() : geometry.joints.at(geometry.headJointIndex).name;
RenderArgs::RenderMode modelRenderMode = (renderMode == RenderArgs::SHADOW_RENDER_MODE) ? // RenderArgs::RenderMode modelRenderMode = (renderMode == RenderArgs::SHADOW_RENDER_MODE) ?
RenderArgs::SHADOW_RENDER_MODE : RenderArgs::DEFAULT_RENDER_MODE; // RenderArgs::SHADOW_RENDER_MODE : RenderArgs::DEFAULT_RENDER_MODE;
for (int i = 0; i < _attachmentData.size(); i++) { for (int i = 0; i < _attachmentData.size(); i++) {
const QString& jointName = _attachmentData.at(i).jointName; const QString& jointName = _attachmentData.at(i).jointName;
if (jointName != headJointName && jointName != "Head") { if (jointName != headJointName && jointName != "Head") {
_attachmentModels.at(i)->render(1.0f, modelRenderMode, args); _attachmentModels.at(i)->render(1.0f, renderMode, args);
} }
} }
} }

View file

@ -394,12 +394,12 @@ void EntityTreeRenderer::render(RenderArgs::RenderMode renderMode, RenderArgs::R
_tree->lockForRead(); _tree->lockForRead();
_tree->recurseTreeWithOperation(renderOperation, &args); _tree->recurseTreeWithOperation(renderOperation, &args);
Model::RenderMode modelRenderMode = renderMode == RenderArgs::SHADOW_RENDER_MODE // Model::RenderMode modelRenderMode = renderMode == RenderArgs::SHADOW_RENDER_MODE
? RenderArgs::SHADOW_RENDER_MODE : RenderArgs::DEFAULT_RENDER_MODE; // ? RenderArgs::SHADOW_RENDER_MODE : RenderArgs::DEFAULT_RENDER_MODE;
// we must call endScene while we still have the tree locked so that no one deletes a model // we must call endScene while we still have the tree locked so that no one deletes a model
// on us while rendering the scene // on us while rendering the scene
Model::endScene(modelRenderMode, &args); Model::endScene(renderMode, &args);
_tree->unlock(); _tree->unlock();
// stats... // stats...

View file

@ -82,15 +82,16 @@ vec3 evalAmbienSphereGlobalColor(float shadowAttenuation, vec3 position, vec3 no
// TODO: The world space normal doesn;t seem to work properly with the current SH definitions // TODO: The world space normal doesn;t seem to work properly with the current SH definitions
// FoOr now, we use the normal in view space // FoOr now, we use the normal in view space
vec3 ambientNormal = normal; vec3 ambientNormal = fragNormal.xzy;
vec3 color = diffuse.rgb * 0.5 * evalSphericalLight(ambientSphere, ambientNormal).xyz; vec3 color = /* diffuse.rgb * 0.5 */ evalSphericalLight(ambientSphere, ambientNormal).xyz;
vec4 shading = evalFragShading(fragNormal, -getLightDirection(light), fragEyeDir, specular, gloss); vec4 shading = evalFragShading(fragNormal, -getLightDirection(light), fragEyeDir, specular, gloss);
color += vec3(diffuse + shading.rgb) * shading.w * shadowAttenuation * getLightColor(light) * getLightIntensity(light); // color += vec3(diffuse + shading.rgb) * shading.w * shadowAttenuation * getLightColor(light) * getLightIntensity(light);
return color; //return color;
return fragNormal;
} }
vec3 evalLightmappedColor(float shadowAttenuation, vec3 normal, vec3 diffuse, vec3 lightmap) { vec3 evalLightmappedColor(float shadowAttenuation, vec3 normal, vec3 diffuse, vec3 lightmap) {

View file

@ -814,9 +814,6 @@ bool Model::renderCore(float alpha, RenderMode mode, RenderArgs* args) {
translucentMeshPartsRendered += renderMeshes(batch, mode, true, MOSTLY_TRANSPARENT_THRESHOLD, false, true, true, true, args, true); translucentMeshPartsRendered += renderMeshes(batch, mode, true, MOSTLY_TRANSPARENT_THRESHOLD, false, true, true, true, args, true);
} }
// try that
batch.setPipeline(gpu::PipelinePointer());
GLBATCH(glDepthMask)(true); GLBATCH(glDepthMask)(true);
GLBATCH(glDepthFunc)(GL_LESS); GLBATCH(glDepthFunc)(GL_LESS);
GLBATCH(glDisable)(GL_CULL_FACE); GLBATCH(glDisable)(GL_CULL_FACE);