UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MediaShaders.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "GlobalShader.h"
8
10class FRDGBuilder;
11class FRDGTexture;
12
13namespace UE {
14 namespace Color {
15 enum class EEncoding : uint8;
16 }
17}
18
20#define NUM_MEDIA_SHADERS_CONVERSION_OP 5
21
22
23namespace MediaShaders
24{
25 enum class EToneMapMethod : uint8
26 {
27 None = 0,
28 Hable = 1,
30
31 MAX
32 };
33
36
39
42
45
48
51
54
57
60
63
66
69
72
75
78
81
84
87}
88
89
105
106inline FBufferRHIRef CreateTempMediaVertexBuffer(FRHICommandListBase& RHICmdList, float ULeft = 0.0f, float URight = 1.0f, float VTop = 0.0f, float VBottom = 1.0f)
107{
108 const FRHIBufferCreateDesc CreateDesc =
109 FRHIBufferCreateDesc::CreateVertex<FMediaElementVertex>(TEXT("TempMediaVertexBuffer"), 4)
113
115
116 Vertices[0].Position.Set(-1.0f, 1.0f, 1.0f, 1.0f); // Top Left
117 Vertices[1].Position.Set(1.0f, 1.0f, 1.0f, 1.0f); // Top Right
118 Vertices[2].Position.Set(-1.0f, -1.0f, 1.0f, 1.0f); // Bottom Left
119 Vertices[3].Position.Set(1.0f, -1.0f, 1.0f, 1.0f); // Bottom Right
120
121 Vertices[0].TextureCoordinate.Set(ULeft, VTop);
122 Vertices[1].TextureCoordinate.Set(URight, VTop);
123 Vertices[2].TextureCoordinate.Set(ULeft, VBottom);
124 Vertices[3].TextureCoordinate.Set(URight, VBottom);
125
126 return Vertices.Finalize();
127}
128
129UE_DEPRECATED(5.6, "CreateTempMediaVertexBuffer requires a Command List argument")
134
149
151
152
170
171
193
194
214
215
237
238
261
262
284
303
322
341
363
385
386
410
422
423
446
447
469
470
490
491
512
513
533
556
576
577
600
601
621
622
644
645
654
655
674
675
696
703{
704public:
706
708
709 class FConversionOp : SHADER_PERMUTATION_INT("CONVERSION_OP", NUM_MEDIA_SHADERS_CONVERSION_OP);
711
712 BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
713 SHADER_PARAMETER_RDG_TEXTURE(Texture2D, InputTexture)
714 SHADER_PARAMETER_SAMPLER(SamplerState, InputSampler)
717
718public:
720 RENDERCORE_API FModifyAlphaSwizzleRgbaPS::FParameters* AllocateAndSetParameters(FRDGBuilder& GraphBuilder, FRDGTextureRef RGBATexture, FRDGTextureRef OutputTexture);
721};
722
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FBufferRHIRef CreateTempMediaVertexBuffer(FRHICommandListBase &RHICmdList, float ULeft=0.0f, float URight=1.0f, float VTop=0.0f, float VBottom=1.0f)
Definition MediaShaders.h:106
RENDERCORE_API TGlobalResource< FMediaVertexDeclaration > GMediaVertexDeclaration
Definition MediaShaders.cpp:28
#define SHADER_PARAMETER_RDG_TEXTURE(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1752
#define SHADER_PARAMETER_SAMPLER(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1740
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define RENDER_TARGET_BINDING_SLOTS()
Definition ShaderParameterMacros.h:1955
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
@ SPF_Mandatory
Definition ShaderParameters.h:51
#define SHADER_PERMUTATION_INT(InDefineName, Count)
Definition ShaderPermutation.h:492
#define DECLARE_EXPORTED_SHADER_TYPE(ShaderClass, ShaderMetaTypeShortcut, RequiredAPI,...)
Definition Shader.h:1683
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MediaShaders.h:564
FARGB16BigConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:570
FARGB16BigConvertPS()
Definition MediaShaders.h:568
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, FShaderResourceViewRHIRef SRV, const FIntPoint &OutputDimensions, UE::Color::EEncoding Encoding, const FMatrix44f &CSTransform, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:765
Definition MediaShaders.h:181
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > AYUVTexture, const FMatrix &ColorTransform, const FVector &YUVOffset, bool SrgbToLinear)
Definition MediaShaders.cpp:155
FAYUVConvertPS()
Definition MediaShaders.h:185
FAYUVConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:187
Definition MediaShaders.h:202
FBMPConvertPS()
Definition MediaShaders.h:206
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > BMPTexture, const FIntPoint &OutputDimensions, bool SrgbToLinear)
Definition MediaShaders.cpp:184
FBMPConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:208
Definition GlobalShader.h:269
Definition MediaShaders.h:158
FMediaShadersVS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:166
FMediaShadersVS()
Definition MediaShaders.h:163
Definition MediaShaders.h:139
virtual RENDERCORE_API ~FMediaVertexDeclaration()
virtual RENDERCORE_API void InitRHI(FRHICommandListBase &RHICmdList) override
Definition MediaShaders.cpp:14
RENDERCORE_API FMediaVertexDeclaration()
virtual RENDERCORE_API void ReleaseRHI() override
Definition MediaShaders.cpp:23
FVertexDeclarationRHIRef VertexDeclarationRHI
Definition MediaShaders.h:147
Definition MediaShaders.h:703
SHADER_USE_PARAMETER_STRUCT(FModifyAlphaSwizzleRgbaPS, FGlobalShader)
DECLARE_EXPORTED_GLOBAL_SHADER(FModifyAlphaSwizzleRgbaPS, RENDERCORE_API)
Definition MediaShaders.h:248
FNV12ConvertAsBytesPS()
Definition MediaShaders.h:253
FNV12ConvertAsBytesPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:255
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > NV12Texture, const FIntPoint &OutputDimensions, const FMatrix44f &ColorTransform, UE::Color::EEncoding Encoding, const FMatrix44f &CSTransform, bool bSwapChroma, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:278
Definition MediaShaders.h:225
FNV12ConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:231
FNV12ConvertPS()
Definition MediaShaders.h:229
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, const FIntPoint &TexDim, FShaderResourceViewRHIRef SRV_Y, FShaderResourceViewRHIRef SRV_UV, const FIntPoint &OutputDimensions, const FMatrix44f &ColorTransform, UE::Color::EEncoding Encoding, const FMatrix44f &CSTransform, bool bSwapChroma, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:219
Definition MediaShaders.h:272
FNV21ConvertPS()
Definition MediaShaders.h:276
FNV21ConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:278
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > NV21Texture, const FIntPoint &OutputDimensions, const FMatrix &ColorTransform, const FVector &YUVOffset, bool SrgbToLinear)
Definition MediaShaders.cpp:316
Definition MediaShaders.h:309
FP010ConvertAsUINT16sPS()
Definition MediaShaders.h:314
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, const FIntPoint &TexDim, TRefCountPtr< FRHITexture > NV12Texture, const FIntPoint &OutputDimensions, const FMatrix44f &ColorTransform, const FMatrix44f &CSTransform, UE::Color::EEncoding Encoding, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:390
FP010ConvertAsUINT16sPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:316
Definition MediaShaders.h:290
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, const FIntPoint &TexDim, FShaderResourceViewRHIRef SRV_Y, FShaderResourceViewRHIRef SRV_UV, const FIntPoint &OutputDimensions, const FMatrix44f &ColorTransform, const FMatrix44f &CSTransform, UE::Color::EEncoding Encoding, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:352
FP010ConvertPS()
Definition MediaShaders.h:295
FP010ConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:297
Definition MediaShaders.h:328
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, const FIntPoint &TexDim, FShaderResourceViewRHIRef SRV_Y, FShaderResourceViewRHIRef SRV_U, FShaderResourceViewRHIRef SRV_V, const FIntPoint &OutputDimensions, const FMatrix44f &ColorTransform, const FMatrix44f &CSTransform, UE::Color::EEncoding Encoding, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:431
FP010_2101010ConvertPS()
Definition MediaShaders.h:333
FP010_2101010ConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:335
Definition MemoryImage.h:49
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition MediaShaders.h:680
SHADER_USE_PARAMETER_STRUCT(FRGB10toYUVv210ConvertPS, FGlobalShader)
DECLARE_EXPORTED_GLOBAL_SHADER(FRGB10toYUVv210ConvertPS, RENDERCORE_API)
Definition MediaShaders.h:659
SHADER_USE_PARAMETER_STRUCT(FRGB8toUYVY8ConvertPS, FGlobalShader)
DECLARE_EXPORTED_GLOBAL_SHADER(FRGB8toUYVY8ConvertPS, RENDERCORE_API)
Definition MediaShaders.h:609
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > RGBATexture, const FVector4f &ColorTransform, bool LinearToSrgb)
Definition MediaShaders.cpp:862
FRGB8toY8ConvertPS()
Definition MediaShaders.h:613
FRGB8toY8ConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:615
Definition MediaShaders.h:350
FRGBConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:356
FRGBConvertPS()
Definition MediaShaders.h:354
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > RGBTexture, const FIntPoint &OutputDimensions, UE::Color::EEncoding Encoding, const FMatrix44f &CSTransform, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:474
Definition RHICommandList.h:455
FRHIBufferInitializer CreateBufferInitializer(const FRHIBufferCreateDesc &CreateDesc)
Definition RHICommandList.h:792
static FRHICommandListImmediate & Get()
Definition RHICommandList.h:5522
Definition MediaShaders.h:628
LAYOUT_FIELD(FShaderResourceParameter, InTexture)
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, FTextureRHIRef TextureExt, FSamplerStateRHIRef SamplerState, const FLinearColor &ScaleRotation, const FLinearColor &Offset)
Definition MediaShaders.cpp:890
FReadTextureExternalPS()
Definition MediaShaders.h:632
FReadTextureExternalPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:634
Definition RenderResource.h:37
Definition ShaderParameters.h:87
Definition MediaShaders.h:434
FUYVYConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:440
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > UYVYTexture, const FMatrix &ColorTransform, const FVector &YUVOffset, bool SrgbToLinear)
Definition MediaShaders.cpp:577
FUYVYConvertPS()
Definition MediaShaders.h:438
Definition MediaShaders.h:733
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > VYUTexture, const FIntPoint &OutputDimensions, const FMatrix44f &ColorTransform, UE::Color::EEncoding Encoding, const FMatrix44f &CSTransform, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None, const FLinearColor &UVRotation=FLinearColor(1.0f, 0.0f, 0.0f, 1.0f), const FLinearColor &UVRotOffset=FLinearColor(0.0f, 0.0f, 0.0f, 0.0f))
Definition MediaShaders.cpp:986
FVYUConvertPS()
Definition MediaShaders.h:737
FVYUConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:739
Definition MediaShaders.h:412
FYCbCrConvertPS_4x4Matrix(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:418
FYCbCrConvertPS_4x4Matrix()
Definition MediaShaders.h:416
Definition MediaShaders.h:398
FYCbCrConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:404
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > LumaTexture, TRefCountPtr< FRHITexture > CbCrTexture, const FMatrix &ColorTransform, const FVector &YUVOffset, bool SrgbToLinear)
Definition MediaShaders.cpp:541
FYCbCrConvertPS()
Definition MediaShaders.h:402
Definition MediaShaders.h:372
FYCoCgConvertPS()
Definition MediaShaders.h:376
FYCoCgConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:378
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > YCoCgTexture, const FIntPoint &OutputDimensions, UE::Color::EEncoding Encoding, const FMatrix44f &CSTransform, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:507
Definition MediaShaders.h:456
FYUVConvertPS()
Definition MediaShaders.h:460
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > YTexture, TRefCountPtr< FRHITexture > UTexture, TRefCountPtr< FRHITexture > VTexture, const FIntPoint &OutputDimensions, const FMatrix &ColorTransform, const FVector &YUVOffset, bool SrgbToLinear)
Definition MediaShaders.cpp:613
FYUVConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:462
Definition MediaShaders.h:521
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, FShaderResourceViewRHIRef SRV_Y, const FMatrix44f &ColorTransform, UE::Color::EEncoding Encoding, const FMatrix44f &CSTransform, bool bIsARGBFmt, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:732
FYUVY416ConvertPS()
Definition MediaShaders.h:525
FYUVY416ConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:527
Definition MediaShaders.h:500
FYUVv210ConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:506
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > YUVTexture, const FIntPoint &OutputDimensions, const FMatrix44f &ColorTransform, UE::Color::EEncoding Encoding, const FMatrix44f &CSTransform, bool bIsCbY0CrY1, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:696
FYUVv210ConvertPS()
Definition MediaShaders.h:504
Definition MediaShaders.h:478
FYUVv216ConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:484
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > YUVTexture, const FIntPoint &OutputDimensions, const FMatrix44f &ColorTransform, UE::Color::EEncoding Encoding, const FMatrix44f &CSTransform, bool bIsCbY0CrY1, bool bIsARGBFmt, bool bSwapChroma, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None, bool bUseBilinearSamplingForChroma=false)
Definition MediaShaders.cpp:655
FYUVv216ConvertPS()
Definition MediaShaders.h:482
Definition MediaShaders.h:544
FYUY2ConvertPS()
Definition MediaShaders.h:548
FYUY2ConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:550
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > YUY2Texture, const FIntPoint &OutputDimensions, const FMatrix &ColorTransform, const FVector &YUVOffset, bool SrgbToLinear, MediaShaders::EToneMapMethod ToneMapMethod=MediaShaders::EToneMapMethod::None)
Definition MediaShaders.cpp:798
Definition MediaShaders.h:588
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, TRefCountPtr< FRHITexture > YVYUTexture, const FMatrix &ColorTransform, const FVector &YUVOffset, bool SrgbToLinear)
Definition MediaShaders.cpp:831
FYVYUConvertPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MediaShaders.h:594
FYVYUConvertPS()
Definition MediaShaders.h:592
Definition RenderResource.h:543
Definition Texture.h:1219
Definition MediaShaders.cpp:35
const FMatrix YuvToRgbRec709Unscaled
Definition MediaShaders.cpp:56
const FMatrix YuvToRgbRec709Scaled
Definition MediaShaders.cpp:63
const FMatrix RgbToYuvRec709Scaled
Definition MediaShaders.cpp:93
const FMatrix YuvToRgbRec601Scaled
Definition MediaShaders.cpp:49
const FMatrix YuvToRgbRec601Unscaled
Definition MediaShaders.cpp:42
EToneMapMethod
Definition MediaShaders.h:26
const FVector YUVOffsetNoScale10bits
Definition MediaShaders.cpp:112
const FMatrix YuvToRgbRec2020Unscaled
Definition MediaShaders.cpp:70
const FMatrix RgbToYuvRec2020Scaled
Definition MediaShaders.cpp:101
const FVector YUVOffset8bits
Definition MediaShaders.cpp:108
const FVector YUVOffset16bits
Definition MediaShaders.cpp:114
const FVector YUVOffsetNoScaleFloat
Definition MediaShaders.cpp:118
FMatrix CombineColorTransformAndOffset(const FMatrix &InMatrix, const FVector &InYUVOffset)
Definition MediaShaders.cpp:121
const FVector YUVOffsetFloat
Definition MediaShaders.cpp:117
const FMatrix YuvToSrgbPs4
Definition MediaShaders.cpp:85
const FVector YUVOffset10bits
Definition MediaShaders.cpp:111
const FVector YUVOffsetNoScale16bits
Definition MediaShaders.cpp:115
const FMatrix YuvToRgbRec2020Scaled
Definition MediaShaders.cpp:77
const FVector YUVOffsetNoScale8bits
Definition MediaShaders.cpp:109
EEncoding
Definition ColorManagementDefines.h:20
Definition AdvancedWidgetsModule.cpp:13
Definition Color.h:48
Definition MediaShaders.h:94
FMediaElementVertex()
Definition MediaShaders.h:98
FMediaElementVertex(const FVector4f &InPosition, const FVector2f &InTextureCoordinate)
Definition MediaShaders.h:100
FVector2f TextureCoordinate
Definition MediaShaders.h:96
FVector4f Position
Definition MediaShaders.h:95
Definition RHIShaderParameters.h:241
Definition RHIResources.h:1417
FRHIBufferCreateDesc & SetInitActionInitializer()
Definition RHIResources.h:1542
FRHIBufferCreateDesc & DetermineInitialState()
Definition RHIResources.h:1529
FRHIBufferCreateDesc & AddUsage(EBufferUsageFlags InUsage)
Definition RHIResources.h:1524
RHI_API FBufferRHIRef Finalize()
Definition RHIBufferInitializer.cpp:17
Definition Shader.h:1610
Definition RHIBufferInitializer.h:110
Definition ShaderPermutation.h:229
Definition IntPoint.h:25