Files
UnrealEngineUWP/Engine/Source/Developer/ShaderPreprocessor/Public/ShaderPreprocessor.h
arciel rekman e1db3cb334 Don't include commented out defines in the preprocessed code by default.
- Defines will still be there if we're dumping the shader code for debug.
- This makes the code less unique in general case and also avoids unnecessary works that no one sees.

#rb Lukas.Hermanns
[FYI] Lukas.Hermanns, Rolando.Caloca


#ROBOMERGE-SOURCE: CL 11311362 via CL 11311438
#ROBOMERGE-BOT: (v653-11302973)

[CL 11311455 by arciel rekman in Main branch]
2020-02-10 16:07:53 -05:00

36 lines
1.3 KiB
C

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "ShaderCore.h"
/** Governs the behavior for adding shader defines to the preprocessed source. Can be helpful for the debugging, but makes the source unique
which can prevent efficient caching.
*/
enum class EDumpShaderDefines : uint8
{
/** Will not be dumped unless Input.DumpDebugInfoPath is set */
DontCare,
/** No defines */
DontIncludeDefines,
/** Defines will be added in the comments */
AlwaysIncludeDefines
};
/**
* Preprocess a shader.
* @param OutPreprocessedShader - Upon return contains the preprocessed source code.
* @param ShaderOutput - ShaderOutput to which errors can be added.
* @param ShaderInput - The shader compiler input.
* @param AdditionalDefines - Additional defines with which to preprocess the shader.
* @param bShaderDumpDefinesAsCommentedCode - Whether to add shader definitions as comments.
* @returns true if the shader is preprocessed without error.
*/
extern SHADERPREPROCESSOR_API bool PreprocessShader(
FString& OutPreprocessedShader,
FShaderCompilerOutput& ShaderOutput,
const FShaderCompilerInput& ShaderInput,
const FShaderCompilerDefinitions& AdditionalDefines,
EDumpShaderDefines DefinesPolicy = EDumpShaderDefines::DontCare);