// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) // SPDX-FileCopyrightText: 2025 Jorrit Rouwe // SPDX-License-Identifier: MIT #pragma once #include #include #include class RendererMTL; /// Metal pipeline state object class PipelineStateMTL : public PipelineState { public: /// Constructor PipelineStateMTL(RendererMTL *inRenderer, const VertexShaderMTL *inVertexShader, const EInputDescription *inInputDescription, uint inInputDescriptionCount, const PixelShaderMTL *inPixelShader, EDrawPass inDrawPass, EFillMode inFillMode, ETopology inTopology, EDepthTest inDepthTest, EBlendMode inBlendMode, ECullMode inCullMode); virtual ~PipelineStateMTL() override; /// Make this pipeline state active (any primitives rendered after this will use this state) virtual void Activate() override; private: RendererMTL * mRenderer; RefConst mVertexShader; RefConst mPixelShader; id mPipelineState; id mDepthState; MTLCullMode mCullMode; MTLTriangleFillMode mFillMode; };