#pragma once

#include "CoreMinimal.h"
#include "FilmGrainParams.generated.h"

class UTexture2D;

USTRUCT(BlueprintType)
struct FFilmGrainParams
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Interp)
	float FilmGrainIntensity;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Interp)
	float FilmGrainIntensityShadows;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Interp)
	float FilmGrainIntensityMidtones;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Interp)
	float FilmGrainIntensityHighlights;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Interp)
	float FilmGrainShadowsMax;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Interp)
	float FilmGrainHighlightsMin;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Interp)
	float FilmGrainHighlightsMax;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Interp)
	float FilmGrainTexelSize;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UTexture2D* FilmGrainTexture;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 bOverride_FilmGrainIntensity : 1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 bOverride_FilmGrainIntensityShadows : 1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 bOverride_FilmGrainIntensityMidtones : 1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 bOverride_FilmGrainIntensityHighlights : 1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 bOverride_FilmGrainShadowsMax : 1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 bOverride_FilmGrainHighlightsMin : 1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 bOverride_FilmGrainHighlightsMax : 1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 bOverride_FilmGrainTexelSize : 1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 bOverride_FilmGrainTexture : 1;

public:
	GRAPHICSEXTENSIONS_API FFilmGrainParams();
};

FORCEINLINE uint32 GetTypeHash(const FFilmGrainParams) { return 0; }
