libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
Fast::GfxRenderingAPIMetal Class Referencefinal

Metal implementation of the Fast3D rendering API. More...

#include <gfx_metal.h>

Inheritance diagram for Fast::GfxRenderingAPIMetal:
[legend]
Collaboration diagram for Fast::GfxRenderingAPIMetal:
[legend]

Public Member Functions

 GfxRenderingAPIMetal (std::shared_ptr< Ship::ConsoleVariable > consoleVariable=nullptr, std::shared_ptr< Ship::ResourceManager > resourceManager=nullptr)
 Constructs the Metal renderer with optional shared dependencies.
 
 ~GfxRenderingAPIMetal () override=default
 
void NewFrame ()
 Begins a new ImGui frame for the Metal renderer bridge.
 
void SetupFloatingFrame ()
 Prepares floating-frame state for rendering ImGui draw data.
 
void RenderDrawData (ImDrawData *drawData)
 Renders ImGui draw data using the active Metal command encoder.
 
bool MetalInit (SDL_Renderer *renderer)
 Initializes Metal/SDL bridge objects for this renderer instance.
 
GfxRenderingAPI implementation
const char * GetName () override
 
int GetMaxTextureSize () override
 
GfxClipParameters GetClipParameters () override
 
void UnloadShader (ShaderProgram *oldPrg) override
 
void LoadShader (ShaderProgram *newPrg) override
 
ShaderProgramCreateAndLoadNewShader (uint64_t shaderId0, uint64_t shaderId1) override
 
ShaderProgramLookupShader (uint64_t shaderId0, uint64_t shaderId1) override
 
void ShaderGetInfo (ShaderProgram *prg, uint8_t *numInputs, bool usedTextures[2]) override
 
void ClearShaderCache () override
 
uint32_t NewTexture () override
 
void SelectTexture (int tile, uint32_t textureId) override
 
void UploadTexture (const uint8_t *rgba32Buf, uint32_t width, uint32_t height) override
 
void SetSamplerParameters (int sampler, bool linear_filter, uint32_t cms, uint32_t cmt) override
 
void SetDepthTestAndMask (bool depth_test, bool z_upd) override
 
void SetCurrentPrimDepth (float depth) override
 
void SetZmodeDecal (bool decal) override
 
void SetViewport (int x, int y, int width, int height) override
 
void SetScissor (int x, int y, int width, int height) override
 
void SetUseAlpha (bool useAlpha) override
 
void DrawTriangles (float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris) override
 
void Init () override
 
void OnResize () override
 
void StartFrame () override
 
void EndFrame () override
 
void FinishRender () override
 
int CreateFramebuffer () override
 
void UpdateFramebufferParameters (int fb_id, uint32_t width, uint32_t height, uint32_t msaa_level, bool opengl_invertY, bool render_target, bool has_depth_buffer, bool can_extract_depth) override
 
void StartDrawToFramebuffer (int fbId, float noiseScale) override
 
void CopyFramebuffer (int fbDstId, int fbSrcId, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1) override
 
void ClearFramebuffer (bool color, bool depth) override
 
void ReadFramebufferToCPU (int fbId, uint32_t width, uint32_t height, uint16_t *rgba16Buf) override
 
void ResolveMSAAColorBuffer (int fbIdTarge, int fbIdSrc) override
 
std::unordered_map< std::pair< float, float >, uint16_t, hash_pair_ffGetPixelDepth (int fb_id, const std::set< std::pair< float, float > > &coordinates) override
 
void * GetFramebufferTextureId (int fbId) override
 
void SelectTextureFb (int fbId) override
 
void DeleteTexture (uint32_t texId) override
 
void SetTextureFilter (FilteringMode mode) override
 
FilteringMode GetTextureFilter () override
 
void SetSrgbMode () override
 
ImTextureID GetTextureById (int id) override
 
- Public Member Functions inherited from Fast::GfxRenderingAPI
virtual ~GfxRenderingAPI ()=default
 
virtual void ClearDepthRegion (int x, int y, int w, int h)
 

Additional Inherited Members

- Protected Attributes inherited from Fast::GfxRenderingAPI
int8_t mCurrentDepthTest = 0
 
int8_t mCurrentDepthMask = 0
 
int8_t mCurrentZmodeDecal = 0
 
int8_t mLastDepthTest = -1
 
int8_t mLastDepthMask = -1
 
int8_t mLastZmodeDecal = -1
 
bool mSrgbMode = false
 
float mCurrentPrimDepth = 0.0f
 
bool mPrimDepthDirty = true
 

Detailed Description

Metal implementation of the Fast3D rendering API.

Constructor & Destructor Documentation

◆ GfxRenderingAPIMetal()

Fast::GfxRenderingAPIMetal::GfxRenderingAPIMetal ( std::shared_ptr< Ship::ConsoleVariable consoleVariable = nullptr,
std::shared_ptr< Ship::ResourceManager resourceManager = nullptr 
)

Constructs the Metal renderer with optional shared dependencies.

◆ ~GfxRenderingAPIMetal()

Fast::GfxRenderingAPIMetal::~GfxRenderingAPIMetal ( )
overridedefault

Member Function Documentation

◆ ClearFramebuffer()

void Fast::GfxRenderingAPIMetal::ClearFramebuffer ( bool  color,
bool  depth 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ ClearShaderCache()

void Fast::GfxRenderingAPIMetal::ClearShaderCache ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ CopyFramebuffer()

void Fast::GfxRenderingAPIMetal::CopyFramebuffer ( int  fbDstId,
int  fbSrcId,
int  srcX0,
int  srcY0,
int  srcX1,
int  srcY1,
int  dstX0,
int  dstY0,
int  dstX1,
int  dstY1 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ CreateAndLoadNewShader()

ShaderProgram * Fast::GfxRenderingAPIMetal::CreateAndLoadNewShader ( uint64_t  shaderId0,
uint64_t  shaderId1 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ CreateFramebuffer()

int Fast::GfxRenderingAPIMetal::CreateFramebuffer ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ DeleteTexture()

void Fast::GfxRenderingAPIMetal::DeleteTexture ( uint32_t  texId)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ DrawTriangles()

void Fast::GfxRenderingAPIMetal::DrawTriangles ( float  buf_vbo[],
size_t  buf_vbo_len,
size_t  buf_vbo_num_tris 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ EndFrame()

void Fast::GfxRenderingAPIMetal::EndFrame ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ FinishRender()

void Fast::GfxRenderingAPIMetal::FinishRender ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ GetClipParameters()

GfxClipParameters Fast::GfxRenderingAPIMetal::GetClipParameters ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ GetFramebufferTextureId()

void * Fast::GfxRenderingAPIMetal::GetFramebufferTextureId ( int  fbId)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ GetMaxTextureSize()

int Fast::GfxRenderingAPIMetal::GetMaxTextureSize ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ GetName()

const char * Fast::GfxRenderingAPIMetal::GetName ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ GetPixelDepth()

std::unordered_map< std::pair< float, float >, uint16_t, hash_pair_ff > Fast::GfxRenderingAPIMetal::GetPixelDepth ( int  fb_id,
const std::set< std::pair< float, float > > &  coordinates 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ GetTextureById()

ImTextureID Fast::GfxRenderingAPIMetal::GetTextureById ( int  id)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ GetTextureFilter()

FilteringMode Fast::GfxRenderingAPIMetal::GetTextureFilter ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ Init()

void Fast::GfxRenderingAPIMetal::Init ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ LoadShader()

void Fast::GfxRenderingAPIMetal::LoadShader ( ShaderProgram newPrg)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ LookupShader()

ShaderProgram * Fast::GfxRenderingAPIMetal::LookupShader ( uint64_t  shaderId0,
uint64_t  shaderId1 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ MetalInit()

bool Fast::GfxRenderingAPIMetal::MetalInit ( SDL_Renderer *  renderer)

Initializes Metal/SDL bridge objects for this renderer instance.

◆ NewFrame()

void Fast::GfxRenderingAPIMetal::NewFrame ( )

Begins a new ImGui frame for the Metal renderer bridge.

◆ NewTexture()

uint32_t Fast::GfxRenderingAPIMetal::NewTexture ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ OnResize()

void Fast::GfxRenderingAPIMetal::OnResize ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ ReadFramebufferToCPU()

void Fast::GfxRenderingAPIMetal::ReadFramebufferToCPU ( int  fbId,
uint32_t  width,
uint32_t  height,
uint16_t *  rgba16Buf 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ RenderDrawData()

void Fast::GfxRenderingAPIMetal::RenderDrawData ( ImDrawData *  drawData)

Renders ImGui draw data using the active Metal command encoder.

◆ ResolveMSAAColorBuffer()

void Fast::GfxRenderingAPIMetal::ResolveMSAAColorBuffer ( int  fbIdTarge,
int  fbIdSrc 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SelectTexture()

void Fast::GfxRenderingAPIMetal::SelectTexture ( int  tile,
uint32_t  textureId 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SelectTextureFb()

void Fast::GfxRenderingAPIMetal::SelectTextureFb ( int  fbId)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SetCurrentPrimDepth()

void Fast::GfxRenderingAPIMetal::SetCurrentPrimDepth ( float  depth)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SetDepthTestAndMask()

void Fast::GfxRenderingAPIMetal::SetDepthTestAndMask ( bool  depth_test,
bool  z_upd 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SetSamplerParameters()

void Fast::GfxRenderingAPIMetal::SetSamplerParameters ( int  sampler,
bool  linear_filter,
uint32_t  cms,
uint32_t  cmt 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SetScissor()

void Fast::GfxRenderingAPIMetal::SetScissor ( int  x,
int  y,
int  width,
int  height 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SetSrgbMode()

void Fast::GfxRenderingAPIMetal::SetSrgbMode ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SetTextureFilter()

void Fast::GfxRenderingAPIMetal::SetTextureFilter ( FilteringMode  mode)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SetupFloatingFrame()

void Fast::GfxRenderingAPIMetal::SetupFloatingFrame ( )

Prepares floating-frame state for rendering ImGui draw data.

◆ SetUseAlpha()

void Fast::GfxRenderingAPIMetal::SetUseAlpha ( bool  useAlpha)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SetViewport()

void Fast::GfxRenderingAPIMetal::SetViewport ( int  x,
int  y,
int  width,
int  height 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ SetZmodeDecal()

void Fast::GfxRenderingAPIMetal::SetZmodeDecal ( bool  decal)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ ShaderGetInfo()

void Fast::GfxRenderingAPIMetal::ShaderGetInfo ( ShaderProgram prg,
uint8_t *  numInputs,
bool  usedTextures[2] 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ StartDrawToFramebuffer()

void Fast::GfxRenderingAPIMetal::StartDrawToFramebuffer ( int  fbId,
float  noiseScale 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ StartFrame()

void Fast::GfxRenderingAPIMetal::StartFrame ( )
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ UnloadShader()

void Fast::GfxRenderingAPIMetal::UnloadShader ( ShaderProgram oldPrg)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ UpdateFramebufferParameters()

void Fast::GfxRenderingAPIMetal::UpdateFramebufferParameters ( int  fb_id,
uint32_t  width,
uint32_t  height,
uint32_t  msaa_level,
bool  opengl_invertY,
bool  render_target,
bool  has_depth_buffer,
bool  can_extract_depth 
)
overridevirtual

Implements Fast::GfxRenderingAPI.

◆ UploadTexture()

void Fast::GfxRenderingAPIMetal::UploadTexture ( const uint8_t *  rgba32Buf,
uint32_t  width,
uint32_t  height 
)
overridevirtual

Implements Fast::GfxRenderingAPI.


The documentation for this class was generated from the following file: