summaryrefslogtreecommitdiff
path: root/indra/newview/lldrawpoolclouds.cpp
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/lldrawpoolclouds.cpp
Print done when done.
Diffstat (limited to 'indra/newview/lldrawpoolclouds.cpp')
-rw-r--r--indra/newview/lldrawpoolclouds.cpp87
1 files changed, 87 insertions, 0 deletions
diff --git a/indra/newview/lldrawpoolclouds.cpp b/indra/newview/lldrawpoolclouds.cpp
new file mode 100644
index 0000000000..c279f085d5
--- /dev/null
+++ b/indra/newview/lldrawpoolclouds.cpp
@@ -0,0 +1,87 @@
+/**
+ * @file lldrawpoolclouds.cpp
+ * @brief LLDrawPoolClouds class implementation
+ *
+ * Copyright (c) 2006-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "lldrawpoolclouds.h"
+
+#include "llface.h"
+#include "llsky.h"
+#include "llviewercamera.h"
+#include "llvoclouds.h"
+#include "pipeline.h"
+
+LLDrawPoolClouds::LLDrawPoolClouds() :
+ LLDrawPool(POOL_CLOUDS, DATA_SIMPLE_IL_MASK, 0)
+{
+}
+
+LLDrawPool *LLDrawPoolClouds::instancePool()
+{
+ return new LLDrawPoolClouds();
+}
+
+void LLDrawPoolClouds::enqueue(LLFace *facep)
+{
+ if (facep->isState(LLFace::BACKLIST))
+ {
+ mMoveFace.put(facep);
+ }
+ else
+ {
+ mDrawFace.push_back(facep);
+ }
+ facep->mDistance = (facep->mCenterAgent - gCamera->getOrigin()) * gCamera->getAtAxis();
+}
+
+void LLDrawPoolClouds::beginRenderPass(S32 pass)
+{
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+ glEnableClientState(GL_NORMAL_ARRAY);
+}
+
+void LLDrawPoolClouds::prerender()
+{
+ mVertexShaderLevel = gPipeline.getVertexShaderLevel(LLPipeline::SHADER_ENVIRONMENT);
+}
+
+void LLDrawPoolClouds::render(S32 pass)
+{
+ LLFastTimer ftm(LLFastTimer::FTM_RENDER_CLOUDS);
+ if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS)))
+ {
+ return;
+ }
+
+ if (mDrawFace.empty())
+ {
+ return;
+ }
+
+ LLGLSPipelineAlpha gls_pipeline_alpha;
+ LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
+ glAlphaFunc(GL_GREATER,0.01f);
+
+ gPipeline.enableLightsFullbright(LLColor4(1.f,1.f,1.f));
+
+ mDrawFace[0]->bindTexture();
+
+ bindGLVertexPointer();
+ bindGLTexCoordPointer();
+ bindGLNormalPointer();
+
+ std::sort(mDrawFace.begin(), mDrawFace.end(), LLFace::CompareDistanceGreater());
+
+ drawLoop();
+}
+
+
+void LLDrawPoolClouds::renderForSelect()
+{
+}