diff --git a/engine/gfx/metal/src/gfx_metal.mm b/engine/gfx/metal/src/gfx_metal.mm index 0ff86cc..0eb84ea 100755 --- a/engine/gfx/metal/src/gfx_metal.mm +++ b/engine/gfx/metal/src/gfx_metal.mm @@ -598,7 +598,17 @@ GFXPipeline* GFXMetal::create_graphics_pipeline(const GFXGraphicsPipelineCreateI MTLDepthStencilDescriptor* depthStencil = [MTLDepthStencilDescriptor new]; if(info.depth.depth_mode != GFXDepthMode::None) { - depthStencil.depthCompareFunction = info.depth.depth_mode == GFXDepthMode::LessOrEqual ? MTLCompareFunctionLessEqual : MTLCompareFunctionLess; + switch(info.depth.depth_mode) { + case GFXDepthMode::Less: + depthStencil.depthCompareFunction = MTLCompareFunctionLess; + break; + case GFXDepthMode::LessOrEqual: + depthStencil.depthCompareFunction = MTLCompareFunctionLessEqual; + break; + case GFXDepthMode::Greater: + depthStencil.depthCompareFunction = MTLCompareFunctionGreater; + break; + } depthStencil.depthWriteEnabled = true; } diff --git a/engine/gfx/public/gfx.hpp b/engine/gfx/public/gfx.hpp index 24fc018..bc17e8f 100755 --- a/engine/gfx/public/gfx.hpp +++ b/engine/gfx/public/gfx.hpp @@ -106,7 +106,8 @@ struct GFXVertexAttribute { enum class GFXDepthMode { None, Less, - LessOrEqual + LessOrEqual, + Greater }; struct GFXPushConstant {