Files
UnrealEngineUWP/Engine/Source/Runtime/SlateRHIRenderer/Private/SlateRHIRendererModule.cpp
Matthew Griffin bb70b349ce Merging CL 2804086 from //UE4/Release-4.11 to Dev-Main (//UE4/Dev-Main) to isolate copyright update
#lockdown Nick.Penwarden

[CL 2819020 by Matthew Griffin in Main branch]
2016-01-07 08:17:16 -05:00

111 lines
2.9 KiB
C++

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
#include "SlateRHIRendererPrivatePCH.h"
#include "Slate3DRenderer.h"
#include "SlateUpdatableBuffer.h"
class FSlateRHIFontAtlasFactory : public ISlateFontAtlasFactory
{
public:
FSlateRHIFontAtlasFactory()
{
if (GIsEditor)
{
AtlasSize = 2048;
}
else
{
AtlasSize = 1024;
if (GConfig)
{
GConfig->GetInt(TEXT("SlateRenderer"), TEXT("FontAtlasSize"), AtlasSize, GEngineIni);
AtlasSize = FMath::Clamp(AtlasSize, 0, 2048);
}
}
}
virtual ~FSlateRHIFontAtlasFactory()
{
}
virtual FIntPoint GetAtlasSize() const override
{
return FIntPoint(AtlasSize, AtlasSize);
}
virtual TSharedRef<FSlateFontAtlas> CreateFontAtlas() const override
{
return MakeShareable(new FSlateFontAtlasRHI(AtlasSize, AtlasSize));
}
private:
/** Size of each font texture, width and height */
int32 AtlasSize;
};
/**
* Implements the Slate RHI Renderer module.
*/
class FSlateRHIRendererModule
: public ISlateRHIRendererModule
{
public:
// ISlateRHIRendererModule interface
virtual TSharedRef<FSlateRenderer> CreateSlateRHIRenderer( ) override
{
ConditionalCreateResources();
return MakeShareable( new FSlateRHIRenderer( SlateFontServices.ToSharedRef(), ResourceManager.ToSharedRef() ) );
}
virtual TSharedRef<ISlate3DRenderer, ESPMode::ThreadSafe> CreateSlate3DRenderer(bool bUseGammaCorrection) override
{
ConditionalCreateResources();
return MakeShareable( new FSlate3DRenderer( SlateFontServices.ToSharedRef(), ResourceManager.ToSharedRef(), bUseGammaCorrection ) );
}
virtual TSharedRef<ISlateFontAtlasFactory> CreateSlateFontAtlasFactory() override
{
return MakeShareable(new FSlateRHIFontAtlasFactory);
}
virtual TSharedRef<ISlateUpdatableInstanceBuffer> CreateInstanceBuffer( int32 InitialInstanceCount ) override
{
return MakeShareable( new FSlateUpdatableInstanceBuffer(InitialInstanceCount) );
}
virtual void StartupModule( ) override { }
virtual void ShutdownModule( ) override { }
private:
/** Creates resource managers if they do not exist */
void ConditionalCreateResources()
{
if( !ResourceManager.IsValid() )
{
ResourceManager = MakeShareable( new FSlateRHIResourceManager );
FSlateDataPayload::ResourceManager = ResourceManager.Get();
}
if( !SlateFontServices.IsValid() )
{
const TSharedRef<FSlateFontCache> GameThreadFontCache = MakeShareable(new FSlateFontCache(MakeShareable(new FSlateRHIFontAtlasFactory)));
const TSharedRef<FSlateFontCache> RenderThreadFontCache = MakeShareable(new FSlateFontCache(MakeShareable(new FSlateRHIFontAtlasFactory)));
SlateFontServices = MakeShareable(new FSlateFontServices(GameThreadFontCache, RenderThreadFontCache));
}
}
private:
/** Resource manager used for all renderers */
TSharedPtr<FSlateRHIResourceManager> ResourceManager;
/** Font services used for all renderers */
TSharedPtr<FSlateFontServices> SlateFontServices;
};
IMPLEMENT_MODULE( FSlateRHIRendererModule, SlateRHIRenderer )