{
HasAlphaFaces = false;
}
- else if (pass == RenderPass.Stencil)
- {
- HasInvisibleFaces = false;
- }
// Draw the prim faces
for (int j = 0; j < Faces.Count; j++)
bool switchedLightsOff = false;
- if (pass == RenderPass.Picking)
- {
- data.PickingID = pickingID;
- var primNrBytes = Utils.UInt16ToBytes((ushort)pickingID);
- var faceColor = new byte[] { primNrBytes[0], primNrBytes[1], (byte)j, 255 };
- GL.Color4(faceColor);
- }
- else if (pass == RenderPass.Stencil)
+ if (pass != RenderPass.Picking)
{
- if (!data.TextureInfo.IsInvisible) continue;
- HasInvisibleFaces = true;
- }
- else
- {
- if (data.TextureInfo.IsInvisible) continue;
bool belongToAlphaPass = (RGBA.A < 0.99f) || (data.TextureInfo.HasAlpha && !data.TextureInfo.IsMask);
if (belongToAlphaPass && pass != RenderPass.Alpha) continue;
GL.BindTexture(TextureTarget.Texture2D, data.TextureInfo.TexturePointer);
}
}
+ else
+ {
+ data.PickingID = pickingID;
+ var primNrBytes = Utils.UInt16ToBytes((ushort)pickingID);
+ var faceColor = new byte[] { primNrBytes[0], primNrBytes[1], (byte)j, 255 };
+ GL.Color4(faceColor);
+ }
if (!RenderSettings.UseVBO || data.VBOFailed)
{
GL.Enable(EnableCap.Lighting);
switchedLightsOff = false;
}
-
}
GL.BindTexture(TextureTarget.Texture2D, 0);
myPos = Client.Self.SimPosition;\r
}\r
\r
- if (pass == RenderPass.Stencil)\r
- {\r
- GL.Disable(EnableCap.Texture2D);\r
- GL.DepthMask(false);\r
- GL.StencilFunc(StencilFunction.Always, 1, 1);\r
- GL.StencilOp(StencilOp.Keep, StencilOp.Keep, StencilOp.Replace);\r
- GL.ColorMask(false, false, false, false);\r
- }\r
-\r
int nrPrims = SortedObjects.Count;\r
for (int i = 0; i < nrPrims; i++)\r
{\r
{\r
// Don't render objects that are outside the draw distane\r
if (Vector3.DistanceSquared(myPos, obj.RenderPosition) > drawDistanceSquared) continue;\r
- if (pass == RenderPass.Simple || pass == RenderPass.Alpha)\r
- {\r
- obj.StartQuery(pass);\r
- obj.Render(pass, ix, this, lastFrameTime);\r
- obj.EndQuery(pass);\r
- }\r
- else\r
- {\r
- obj.Render(pass, ix, this, lastFrameTime);\r
- }\r
+ obj.StartQuery(pass);\r
+ obj.Render(pass, ix, this, lastFrameTime);\r
+ obj.EndQuery(pass);\r
}\r
}\r
\r
- if (pass == RenderPass.Stencil)\r
- {\r
- GL.StencilOp(StencilOp.Keep, StencilOp.Keep, StencilOp.Keep);\r
- GL.ColorMask(true, true, true, true);\r
- GL.StencilFunc(StencilFunction.Notequal, 1, 1);\r
- GL.DepthMask(true);\r
- }\r
-\r
GL.Disable(EnableCap.Texture2D);\r
GL.DisableClientState(ArrayCap.VertexArray);\r
GL.DisableClientState(ArrayCap.TextureCoordArray);\r
GL.ClearColor(0.39f, 0.58f, 0.93f, 1.0f);\r
}\r
\r
- GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit | ClearBufferMask.StencilBufferBit);\r
+ GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);\r
GL.LoadIdentity();\r
\r
// Setup wireframe or solid fill drawing mode\r
GL.Enable(EnableCap.AlphaTest);\r
RenderObjects(RenderPass.Simple);\r
RenderAvatarsSkeleton(RenderPass.Simple);\r
- GL.Enable(EnableCap.StencilTest);\r
- RenderObjects(RenderPass.Stencil);\r
RenderAvatars(RenderPass.Simple);\r
GL.Disable(EnableCap.AlphaTest);\r
- GL.Disable(EnableCap.StencilTest);\r
+\r
GL.DepthMask(false);\r
RenderOccludedObjects();\r
\r
return false;\r
}\r
\r
-\r
- public static readonly UUID invisi1 = new UUID("38b86f85-2575-52a9-a531-23108d8da837");\r
- public static readonly UUID invisi2 = new UUID("e97cf410-8e61-7005-ec06-629eba4cd1fb");\r
-\r
public void DownloadTexture(TextureLoadItem item)\r
{\r
if (texturesRequestedThisFrame < RenderSettings.TexturesToDownloadPerFrame)\r
{\r
item.Data.TextureInfo = TexturesPtrMap[item.TeFace.TextureID];\r
}\r
- else if (item.TeFace.TextureID == invisi1 || item.TeFace.TextureID == invisi2)\r
- {\r
- TexturesPtrMap[item.TeFace.TextureID] = item.Data.TextureInfo;\r
- TexturesPtrMap[item.TeFace.TextureID].HasAlpha = false;\r
- TexturesPtrMap[item.TeFace.TextureID].IsInvisible = true;\r
- }\r
else\r
{\r
TexturesPtrMap[item.TeFace.TextureID] = item.Data.TextureInfo;\r