diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/llface.cpp | 9 | ||||
| -rwxr-xr-x | indra/newview/llspatialpartition.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/llviewershadermgr.cpp | 4 | ||||
| -rwxr-xr-x | indra/newview/llvovolume.cpp | 48 | 
4 files changed, 42 insertions, 21 deletions
| diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 606a595ca4..b2e3300ab3 100755 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -2053,17 +2053,18 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  			mask.clear();  			mask.setElement<3>(); -			LLVector4a* src = vf.mBinormals; -			LLVector4a* end = vf.mBinormals+num_vertices; +			LLVector4a* src = vf.mTangents; +			LLVector4a* end = vf.mTangents+num_vertices;  			while (src < end)  			{  				LLVector4a tangent_out; -				mat_normal.rotate(vf.mTangents[i], tangent_out); +				mat_normal.rotate(*src, tangent_out);  				tangent_out.normalize3fast(); -				tangent_out.setSelectWithMask(mask, vf.mTangents[i], tangent_out); +				tangent_out.setSelectWithMask(mask, *src, tangent_out);  				tangent_out.store4a(tangents); +				src++;  				tangents += 4;  			} diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index b5dab96d93..4752e72de0 100755 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -4687,7 +4687,7 @@ LLDrawInfo::LLDrawInfo(U16 start, U16 end, U32 count, U32 offset,  	mSpecColor(1.0f, 1.0f, 1.0f, 0.5f),  	mBlendFuncSrc(LLRender::BF_SOURCE_ALPHA),  	mBlendFuncDst(LLRender::BF_ONE_MINUS_SOURCE_ALPHA), -	mHasGlow(FALSE) +	mHasGlow(FALSE),  	mEnvIntensity(0.0f),  	mAlphaMaskCutoff(0.5f),  	mDiffuseAlphaMode(0) diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index ac5472a15a..ca0077bf27 100755 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -1492,7 +1492,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredFullbrightShinyProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightShinyV.glsl", GL_VERTEX_SHADER_ARB));  		gDeferredFullbrightShinyProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER_ARB));  		gDeferredFullbrightShinyProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; -		success = gDeferredFullbrightShinyProgram.createShader(NULL, &mShinyUniforms); +		success = gDeferredFullbrightShinyProgram.createShader(NULL, NULL);  	}  	if (success) @@ -1522,7 +1522,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredSkinnedFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinySkinnedV.glsl", GL_VERTEX_SHADER_ARB));  		gDeferredSkinnedFullbrightShinyProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER_ARB));  		gDeferredSkinnedFullbrightShinyProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; -		success = gDeferredSkinnedFullbrightShinyProgram.createShader(NULL, &mShinyUniforms); +		success = gDeferredSkinnedFullbrightShinyProgram.createShader(NULL, NULL);  	}  	if (success) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 48b4673fd8..e26c54c23c 100755 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4408,15 +4408,19 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  	static LLFace** fullbright_faces = (LLFace**) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*),64);  	static LLFace** bump_faces = (LLFace**) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*),64);  	static LLFace** simple_faces = (LLFace**) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*),64); -	static LLFace** norm_faces = (LLFace*) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*), 64); -	static LLFace** spec_faces = (LLFace*) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*), 64); -	static LLFace** normspec_faces = (LLFace*) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*), 64); +	static LLFace** norm_faces = (LLFace**) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*), 64); +	static LLFace** spec_faces = (LLFace**) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*), 64); +	static LLFace** normspec_faces = (LLFace**) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*), 64);  	static LLFace** alpha_faces = (LLFace**) ll_aligned_malloc(MAX_FACE_COUNT*sizeof(LLFace*),64);  	U32 fullbright_count = 0;  	U32 bump_count = 0;  	U32 simple_count = 0;  	U32 alpha_count = 0; +	U32 norm_count = 0; +	U32 spec_count = 0; +	U32 normspec_count = 0; +  	U32 useage = group->mSpatialPartition->mBufferUsage; @@ -4822,24 +4826,40 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  								{  									if (mat->getSpecularID().notNull())  									{ //has normal and specular maps (needs texcoord1, texcoord2, and tangent) -										normspec_faces.push_back(facep); +										if (normspec_count < MAX_FACE_COUNT) +										{ +											normspec_faces[normspec_count++] = facep; +										}  									}  									else  									{ //has normal map (needs texcoord1 and tangent) -										norm_faces.push_back(facep); +										if (norm_count < MAX_FACE_COUNT) +										{ +											norm_faces[norm_count++] = facep; +										}  									}  								}  								else if (mat->getSpecularID().notNull())  								{ //has specular map but no normal map, needs texcoord2 -									spec_faces.push_back(facep); +									if (spec_count < MAX_FACE_COUNT) +									{ +										spec_faces[spec_count++] = facep; +									}  								}  								else  								{ //has neither specular map nor normal map, only needs texcoord0 -									simple_faces.push_back(facep); +									if (simple_count < MAX_FACE_COUNT) +									{ +										simple_faces[simple_count++] = facep; +									}  								}									  							}  							else if (te->getBumpmap())  							{ //needs normal + tangent +								if (bump_count < MAX_FACE_COUNT) +								{ +									bump_faces[bump_count++] = facep; +								}  							}  							else if (te->getShiny() || !te->getFullbright())  							{ //needs normal @@ -4942,13 +4962,13 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  		fullbright_mask = fullbright_mask | LLVertexBuffer::MAP_TEXTURE_INDEX;  	} -	genDrawInfo(group, simple_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, simple_faces, FALSE, batch_textures, FALSE); -	genDrawInfo(group, fullbright_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, fullbright_faces, FALSE, batch_textures); -	genDrawInfo(group, alpha_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, alpha_faces, TRUE, batch_textures); -	genDrawInfo(group, bump_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, bump_faces, FALSE, FALSE); -	genDrawInfo(group, norm_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, norm_faces, FALSE, FALSE); -	genDrawInfo(group, spec_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, spec_faces, FALSE, FALSE); -	genDrawInfo(group, normspec_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, normspec_faces, FALSE, FALSE); +	genDrawInfo(group, simple_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, simple_faces, simple_count, FALSE, batch_textures, FALSE); +	genDrawInfo(group, fullbright_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, fullbright_faces, fullbright_count, FALSE, batch_textures); +	genDrawInfo(group, alpha_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, alpha_faces, alpha_count, TRUE, batch_textures); +	genDrawInfo(group, bump_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, bump_faces, bump_count, FALSE, FALSE); +	genDrawInfo(group, norm_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, norm_faces, norm_count, FALSE, FALSE); +	genDrawInfo(group, spec_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, spec_faces, spec_count, FALSE, FALSE); +	genDrawInfo(group, normspec_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, normspec_faces, normspec_count, FALSE, FALSE);  	if (!LLPipeline::sDelayVBUpdate)  	{ | 
