From abdc99f21b542c4fea67030ddbd7166c9d1c6c63 Mon Sep 17 00:00:00 2001 From: Brad Kittenbrink Date: Wed, 18 Feb 2009 21:10:16 +0000 Subject: Merge of QAR-1267 to trunk. This was a combo merge of QAR-1175 (maint-render-9) and QAR-1236 (dll-msvcrt-2) svn merge -r 109838:112264 svn+ssh://svn.lindenlab.com/svn/linden/branches/maint-render/maint-render-9-merge-r109833 --- indra/newview/pipeline.h | 102 ++++++++++++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 40 deletions(-) (limited to 'indra/newview/pipeline.h') diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 5ab3831753..e8673c7d4c 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -57,6 +57,7 @@ class LLRenderFunc; class LLCubeMap; class LLCullResult; class LLVOAvatar; +class LLGLSLShader; typedef enum e_avatar_skinning_method { @@ -75,6 +76,7 @@ glh::matrix4f glh_get_current_projection(); void glh_set_current_projection(glh::matrix4f& mat); glh::matrix4f gl_ortho(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat znear, GLfloat zfar); glh::matrix4f gl_perspective(GLfloat fovy, GLfloat aspect, GLfloat zNear, GLfloat zFar); +glh::matrix4f gl_lookat(LLVector3 eye, LLVector3 center, LLVector3 up); class LLPipeline { @@ -88,14 +90,13 @@ public: void resizeScreenTexture(); void releaseGLBuffers(); void createGLBuffers(); + void allocateScreenBuffer(U32 resX, U32 resY); void resetVertexBuffers(LLDrawable* drawable); void setUseVBO(BOOL use_vbo); void generateImpostor(LLVOAvatar* avatar); - void generateReflectionMap(LLCubeMap* cube_map, LLCamera& camera); - void blurReflectionMap(LLCubeMap* cube_in, LLCubeMap* cube_out); void bindScreenToTexture(); - void renderBloom(BOOL for_snapshot); + void renderBloom(BOOL for_snapshot, F32 zoom_factor = 1.f, int subfield = 0); void init(); void cleanup(); @@ -176,7 +177,11 @@ public: void updateMoveNormalAsync(LLDrawable* drawablep); void updateMovedList(LLDrawable::drawable_vector_t& move_list); void updateMove(); + BOOL visibleObjectsInFrustum(LLCamera& camera); + BOOL getVisibleExtents(LLCamera& camera, LLVector3 &min, LLVector3& max); void updateCull(LLCamera& camera, LLCullResult& result, S32 water_clip = 0); //if water_clip is 0, ignore water plane, 1, cull to above plane, -1, cull to below plane + void createObjects(F32 max_dtime); + void createObject(LLViewerObject* vobj); void updateGeom(F32 max_dtime); //calculate pixel area of given box from vantage point of given camera @@ -195,9 +200,15 @@ public: void grabReferences(LLCullResult& result); void renderGeom(LLCamera& camera, BOOL forceVBOUpdate = FALSE); - void renderGeomDeferred(); - + void renderGeomDeferred(LLCamera& camera); + void renderGeomPostDeferred(LLCamera& camera); + void renderGeomShadow(LLCamera& camera); + void bindDeferredShader(LLGLSLShader& shader, U32 light_index = 0); + void unbindDeferredShader(LLGLSLShader& shader); + void renderDeferredLighting(); + void generateWaterReflection(LLCamera& camera); + void generateSunShadow(LLCamera& camera); void renderHighlights(); void renderDebug(); @@ -230,7 +241,7 @@ public: LLCullResult::drawinfo_list_t::iterator endRenderMap(U32 type); LLCullResult::sg_list_t::iterator beginAlphaGroups(); LLCullResult::sg_list_t::iterator endAlphaGroups(); - + void addTrianglesDrawn(S32 count); BOOL hasRenderType(const U32 type) const { return (type && (mRenderTypeMask & (1< mCubeBuffer; - - //cube map anti-aliasing buffers - GLuint mBlurCubeBuffer[3]; - GLuint mBlurCubeTexture[3]; + //noise map + U32 mNoiseMap; - //frambuffer object for rendering dynamic cube maps - GLuint mCubeFrameBuffer; - - //depth buffer object for rendering dynamic cube maps - GLuint mCubeDepth; - - LLColor4 mSunDiffuse; LLVector3 mSunDir; @@ -481,6 +500,7 @@ protected: // LLDrawable::drawable_list_t mBuildQ1; // priority LLDrawable::drawable_list_t mBuildQ2; // non-priority + LLViewerObject::vobj_list_t mCreateQ; LLDrawable::drawable_set_t mActiveQ; @@ -525,6 +545,8 @@ protected: LLDrawPool* mWaterPool; LLDrawPool* mGroundPool; LLRenderPass* mSimplePool; + LLRenderPass* mGrassPool; + LLRenderPass* mFullbrightPool; LLDrawPool* mInvisiblePool; LLDrawPool* mGlowPool; LLDrawPool* mBumpPool; -- cgit v1.2.3