diff --git a/Source/Core/Rendering/Renderer3D.cs b/Source/Core/Rendering/Renderer3D.cs index 9cb53672..a858ec3e 100755 --- a/Source/Core/Rendering/Renderer3D.cs +++ b/Source/Core/Rendering/Renderer3D.cs @@ -495,7 +495,7 @@ namespace CodeImp.DoomBuilder.Rendering { graphics.Device.SetRenderState(RenderState.AlphaTestEnable, true); graphics.Shaders.World3D.IgnoreNormals = true; - RenderModels(true, false); + RenderModels(true, true); graphics.Shaders.World3D.IgnoreNormals = false; } @@ -1872,23 +1872,22 @@ namespace CodeImp.DoomBuilder.Rendering General.Settings.GZDrawModelsMode == ModelRenderMode.ACTIVE_THINGS_FILTER || (General.Settings.GZDrawModelsMode == ModelRenderMode.SELECTION && t.Selected))) { - switch(t.RenderPass) - { - case RenderPass.Mask: - case RenderPass.Solid: - ModelData mde = General.Map.Data.ModeldefEntries[t.Thing.Type]; - if(!maskedmodelthings.ContainsKey(mde)) maskedmodelthings.Add(mde, new List<VisualThing>()); - maskedmodelthings[mde].Add(t); - break; - - case RenderPass.Additive: - case RenderPass.Alpha: - translucentmodelthings.Add(t); - break; - - default: - throw new NotImplementedException("Thing model rendering of " + t.RenderPass + " render pass is not implemented!"); - } + if (t.RenderPass == RenderPass.Mask || + t.RenderPass == RenderPass.Solid || + (t.RenderPass == RenderPass.Alpha && (t.VertexColor & 0xFF000000) == 0xFF000000)) + { + ModelData mde = General.Map.Data.ModeldefEntries[t.Thing.Type]; + if (!maskedmodelthings.ContainsKey(mde)) maskedmodelthings.Add(mde, new List<VisualThing>()); + maskedmodelthings[mde].Add(t); + } + else if (t.RenderPass == RenderPass.Alpha || t.RenderPass == RenderPass.Additive) + { + translucentmodelthings.Add(t); + } + else + { + throw new NotImplementedException("Thing model rendering of " + t.RenderPass + " render pass is not implemented!"); + } } // Gather regular things else