59 lines
2.0 KiB
C++
59 lines
2.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
/*=============================================================================
|
|
HairVisibilityRendering.h: Hair strands visibility buffer implementation.
|
|
=============================================================================*/
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "RendererInterface.h"
|
|
#include "RenderGraphResources.h"
|
|
#include "GlobalShader.h"
|
|
#include "ShaderParameterStruct.h"
|
|
#include "HairStrandsData.h"
|
|
|
|
class FViewInfo;
|
|
|
|
class FHairStrandsTilePassVS : public FGlobalShader
|
|
{
|
|
DECLARE_GLOBAL_SHADER(FHairStrandsTilePassVS);
|
|
SHADER_USE_PARAMETER_STRUCT(FHairStrandsTilePassVS, FGlobalShader);
|
|
|
|
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
|
|
SHADER_PARAMETER(FIntPoint, ViewMin)
|
|
SHADER_PARAMETER(int32, bRectPrimitive)
|
|
SHADER_PARAMETER(uint32, TileType)
|
|
SHADER_PARAMETER(FVector2f, ViewInvSize)
|
|
SHADER_PARAMETER_RDG_BUFFER_SRV(Buffer, TileDataBuffer)
|
|
RDG_BUFFER_ACCESS(TileIndirectBuffer, ERHIAccess::IndirectArgs)
|
|
END_SHADER_PARAMETER_STRUCT()
|
|
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
|
|
};
|
|
|
|
FHairStrandsTilePassVS::FParameters GetHairStrandsTileParameters(const FViewInfo& InView, const FHairStrandsTiles& In, FHairStrandsTiles::ETileType TileType);
|
|
|
|
FHairStrandsTiles AddHairStrandsGenerateTilesPass(
|
|
FRDGBuilder& GraphBuilder,
|
|
const FViewInfo& View,
|
|
const FRDGTextureRef& InputTexture);
|
|
|
|
FHairStrandsTiles AddHairStrandsGenerateTilesPass(
|
|
FRDGBuilder& GraphBuilder,
|
|
const FViewInfo& View,
|
|
const FIntPoint& Extent);
|
|
|
|
void AddHairStrandsTileClearPass(
|
|
FRDGBuilder& GraphBuilder,
|
|
const FViewInfo& View,
|
|
const FHairStrandsTiles& TileData,
|
|
FHairStrandsTiles::ETileType TileType,
|
|
FRDGTextureRef OutTexture);
|
|
|
|
void AddHairStrandsDebugTilePass(
|
|
FRDGBuilder& GraphBuilder,
|
|
const FViewInfo& View,
|
|
const FRDGTextureRef& ColorTexture,
|
|
const FHairStrandsTiles& TileData); |