Files
UnrealEngineUWP/Engine/Shaders/Private/VertexFactoryDefaultInterface.ush
2021-01-14 02:38:46 -04:00

93 lines
2.5 KiB
Plaintext

// Copyright Epic Games, Inc. All Rights Reserved.
// Note: include at the end of vertex factories to provide default/dummy implementation of factory functions that are not supported OR that follow the standard pattern
// E.g., if the VF implements the three flavours of VertexFactoryGetViewIndex, it should define VF_IMPLEMENTED_GET_VIEW_INDEX
#ifndef VF_IMPLEMENTED_GET_VIEW_INDEX
#define VF_IMPLEMENTED_GET_VIEW_INDEX
#if defined(GPUCULL_TODO)
uint VertexFactoryGetViewIndex(FVertexFactoryIntermediates Intermediates)
{
#if VF_USE_PRIMITIVE_SCENE_DATA
return Intermediates.SceneData.ViewIndex;
#else
return 0U;
#endif
}
uint VertexFactoryGetInstanceIdLoadIndex(FVertexFactoryIntermediates Intermediates)
{
#if VF_USE_PRIMITIVE_SCENE_DATA
return Intermediates.SceneData.InstanceIdLoadIndex;
#else
return 0U;
#endif
}
float4x4 VertexFactoryGetLocalToWorld(FVertexFactoryIntermediates Intermediates)
{
#if VF_USE_PRIMITIVE_SCENE_DATA
return Intermediates.SceneData.InstanceData.LocalToWorld;
#else
return Primitive.LocalToWorld;
#endif
}
float4x4 VertexFactoryGetWorldToLocal(FVertexFactoryIntermediates Intermediates)
{
#if VF_USE_PRIMITIVE_SCENE_DATA
return Intermediates.SceneData.InstanceData.WorldToLocal;
#else
return Primitive.WorldToLocal;
#endif
}
#if POSITION_ONLY
uint VertexFactoryGetViewIndex(FPositionOnlyVertexFactoryInput Input)
{
#if VF_USE_PRIMITIVE_SCENE_DATA
FSceneDataIntermediates SceneData = GetSceneDataIntermediates(Input.InstanceIdOffset, Input.DrawInstanceId);
return SceneData.ViewIndex;
#else
return 0U;
#endif
}
uint VertexFactoryGetViewIndex(FPositionAndNormalOnlyVertexFactoryInput Input)
{
#if VF_USE_PRIMITIVE_SCENE_DATA
FSceneDataIntermediates SceneData = GetSceneDataIntermediates(Input.InstanceIdOffset, Input.DrawInstanceId);
return SceneData.ViewIndex;
#else
return 0U;
#endif
}
uint VertexFactoryGetInstanceIdLoadIndex(FPositionOnlyVertexFactoryInput Input)
{
#if VF_USE_PRIMITIVE_SCENE_DATA
FSceneDataIntermediates SceneData = GetSceneDataIntermediates(Input.InstanceIdOffset, Input.DrawInstanceId);
return SceneData.InstanceIdLoadIndex;
#else
return 0U;
#endif
}
uint VertexFactoryGetInstanceIdLoadIndex(FPositionAndNormalOnlyVertexFactoryInput Input)
{
#if VF_USE_PRIMITIVE_SCENE_DATA
FSceneDataIntermediates SceneData = GetSceneDataIntermediates(Input.InstanceIdOffset, Input.DrawInstanceId);
return SceneData.InstanceIdLoadIndex;
#else
return 0U;
#endif
}
#endif // POSITION_ONLY
#endif // GPUCULL_TODO
#endif // VF_IMPLEMENTED_GET_VIEW_INDEX