alphaTest { mtlAlphaTest == Always && mtlBlendOp == Add && mtlSrcBlend == SrcAlpha && mtlDestBlend == InvSrcAlpha: mtlAlphaTest == Always && mtlBlendOp == Add && mtlSrcBlend == SrcAlpha && mtlDestBlend == One: GT0; default: passthrough; } blendFunc { default: passthrough; } separateAlphaBlendFunc { mtlBlendOp == Disable: Disable, One, Zero; // Confirmed // somecondition: // Disable, Zero, Zero; // somecondition: // Disable, Zero, DestAlpha; // somecondition: // Disable, One, One; // somecondition: // Disable, One, Zero; //default: // Add, InvDestAlpha, One; default: passthrough; } cullFace { default: passthrough; } depthTest { default: Disable; } depthWrite { default: Disable; } colorWrite { // mtlPolygonOffset == 0: // Enable, Enable; // default: // Enable, Enable; default: passthrough; } gammaWrite { default: passthrough; } polygonOffset { default: 0; } stencil { default: Disable, Always, Keep, Keep, Keep, Always, Keep, Keep, Keep; } wireframe { default: Disable; }