2 #ifndef __EFFEKSEERRENDERER_METAL_BASE_PRE_H__
3 #define __EFFEKSEERRENDERER_METAL_BASE_PRE_H__
7 namespace EffekseerRendererMetal
14 #ifndef __EFFEKSEERRENDERER_RENDERER_H__
15 #define __EFFEKSEERRENDERER_RENDERER_H__
20 #include <Effekseer.h>
36 namespace EffekseerRenderer
40 using RendererRef = ::Effekseer::RefPtr<Renderer>;
47 struct ExternalShaderSettings
49 Effekseer::Backend::ShaderRef StandardShader;
50 Effekseer::Backend::ShaderRef ModelShader;
51 Effekseer::AlphaBlendType Blend;
60 class DistortingCallback
66 virtual ~DistortingCallback()
100 enum class ProxyTextureType
106 class CommandList :
public ::Effekseer::IReference
109 CommandList() =
default;
110 virtual ~CommandList() =
default;
113 class SingleFrameMemoryPool :
public ::Effekseer::IReference
116 SingleFrameMemoryPool() =
default;
117 virtual ~SingleFrameMemoryPool() =
default;
129 struct DepthReconstructionParameter
131 float DepthBufferScale = 1.0f;
132 float DepthBufferOffset = 0.0f;
133 float ProjectionMatrix33 = 0.0f;
134 float ProjectionMatrix34 = 0.0f;
135 float ProjectionMatrix43 = 0.0f;
136 float ProjectionMatrix44 = 0.0f;
139 ::Effekseer::ModelLoaderRef CreateModelLoader(::Effekseer::Backend::GraphicsDeviceRef gprahicsDevice, ::Effekseer::FileInterfaceRef fileInterface =
nullptr);
141 class Renderer :
public ::Effekseer::IReference
148 std::unique_ptr<Impl> impl;
262 virtual void SetCameraParameter(const ::Effekseer::Vector3D& front, const ::Effekseer::Vector3D& position);
292 virtual ::Effekseer::TextureLoaderRef
CreateTextureLoader(::Effekseer::FileInterfaceRef fileInterface =
nullptr) = 0;
297 virtual ::Effekseer::ModelLoaderRef
CreateModelLoader(::Effekseer::FileInterfaceRef fileInterface =
nullptr) = 0;
305 virtual ::Effekseer::MaterialLoaderRef
CreateMaterialLoader(::Effekseer::FileInterfaceRef fileInterface =
nullptr) = 0;
362 virtual void SetRenderMode(Effekseer::RenderMode renderMode);
404 virtual void SetTime(
float time);
422 virtual const ::Effekseer::Backend::TextureRef&
GetBackground();
429 virtual void SetBackground(::Effekseer::Backend::TextureRef texture);
496 #endif // __EFFEKSEERRENDERER_RENDERER_H__
497 #ifndef __EFFEKSEERRENDERER_TEXTURELOADER_H__
498 #define __EFFEKSEERRENDERER_TEXTURELOADER_H__
500 #include <Effekseer.h>
502 namespace EffekseerRenderer
505 ::Effekseer::TextureLoaderRef CreateTextureLoader(::Effekseer::Backend::GraphicsDeviceRef gprahicsDevice,
506 ::Effekseer::FileInterfaceRef fileInterface =
nullptr,
507 ::Effekseer::ColorSpaceType colorSpaceType = ::Effekseer::ColorSpaceType::Gamma);
511 #endif // __EFFEKSEERRENDERER_TEXTURELOADER_H__
513 #ifndef __EFFEKSEERRENDERER_METAL_RENDERER_H__
514 #define __EFFEKSEERRENDERER_METAL_RENDERER_H__
516 #include <functional>
518 #import <MetalKit/MetalKit.h>
520 @class MTLRenderPassDescriptor;
521 @protocol MTLDevice, MTLCommandBuffer, MTLRenderCommandEncoder, MTLTexture;
523 namespace EffekseerRendererMetal
526 ::Effekseer::MaterialLoaderRef CreateMaterialLoader(::Effekseer::Backend::GraphicsDeviceRef graphicsDevice, ::Effekseer::FileInterfaceRef fileInterface = NULL);
528 ::Effekseer::Backend::GraphicsDeviceRef CreateDevice();
530 ::EffekseerRenderer::RendererRef Create(
531 ::Effekseer::Backend::GraphicsDeviceRef graphicsDevice,
532 int32_t squareMaxCount,
533 MTLPixelFormat renderTargetFormat,
534 MTLPixelFormat depthStencilFormat,
535 bool isReversedDepth);
544 ::EffekseerRenderer::RendererRef Create(int32_t squareMaxCount,
545 MTLPixelFormat renderTargetFormat,
546 MTLPixelFormat depthStencilFormat,
547 bool isReversedDepth);
549 Effekseer::Backend::TextureRef CreateTexture(::Effekseer::Backend::GraphicsDeviceRef graphicsDevice, id<MTLTexture> texture);
551 void BeginCommandList(Effekseer::RefPtr<EffekseerRenderer::CommandList> commandList, id<MTLRenderCommandEncoder> encoder);
553 void EndCommandList(Effekseer::RefPtr<EffekseerRenderer::CommandList> commandList);
559 #ifndef __EFFEKSEERRENDERER_LLGI_COMMON_H__
560 #define __EFFEKSEERRENDERER_LLGI_COMMON_H__
562 #include <Effekseer.h>
564 namespace EffekseerRenderer
567 struct RenderPassPipelineStateKey
569 std::array<Effekseer::Backend::TextureFormatType, 8> RenderTargetFormats;
570 int32_t RenderTargetCount = 0;
571 Effekseer::Backend::TextureFormatType DepthFormat = Effekseer::Backend::TextureFormatType::Unknown;
574 void ChangeRenderPassPipelineState(EffekseerRenderer::RendererRef renderer, RenderPassPipelineStateKey key);
576 void FlushAndWait(::Effekseer::Backend::GraphicsDeviceRef graphicsDevice);
578 Effekseer::RefPtr<EffekseerRenderer::CommandList> CreateCommandList(::Effekseer::Backend::GraphicsDeviceRef graphicsDevice,
579 Effekseer::RefPtr<::EffekseerRenderer::SingleFrameMemoryPool> memoryPool);
581 Effekseer::RefPtr<EffekseerRenderer::SingleFrameMemoryPool> CreateSingleFrameMemoryPool(::Effekseer::Backend::GraphicsDeviceRef renderer);