14#include "SplineMeshShaderParams.h"
95template<
typename TDerived>
127 auto& SceneProxy = Downcast();
135 SceneProxy.GetScene().RequestGPUSceneUpdate(
136 *SceneProxy.GetPrimitiveSceneInfo(),
158#define IMPL_SPLINE_MESH_SCENE_PROXY_COMMON(classname) \
159 friend class TSplineMeshSceneProxyCommon<classname>; \
161 virtual classname& Downcast() override { return *this; }
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::Math::TIntVector2< uint32 > FUintVector2
Definition MathFwd.h:103
#define LAYOUT_FIELD(T, Name,...)
Definition MemoryLayout.h:471
#define DECLARE_TYPE_LAYOUT(T, Interface)
Definition MemoryLayout.h:557
void BeginUpdateResourceRHI(FRenderResource *Resource, FRenderCommandPipe *RenderCommandPipe)
Definition RenderResource.cpp:302
#define ENQUEUE_RENDER_COMMAND(Type)
Definition RenderingThread.h:1167
ENGINE_API void UpdateSplineMeshParams_RenderThread(FPrimitiveSceneProxy *SceneProxy, const FSplineMeshShaderParams &Params)
Definition SplineMeshSceneProxy.cpp:553
#define IMPL_SPLINE_MESH_SCENE_PROXY_COMMON(classname)
Definition SplineMeshSceneProxy.h:158
EVertexInputStreamType
Definition VertexFactory.h:128
Definition LocalVertexFactory.h:51
FDataType Data
Definition LocalVertexFactory.h:188
Definition MaterialRenderProxy.h:102
Definition MeshDrawShaderBindings.h:104
Definition MeshMaterialShader.h:68
Definition SplineMeshSceneProxy.h:207
virtual void OnTransformChanged(FRHICommandListBase &RHICmdList) override
Definition SplineMeshSceneProxy.cpp:501
virtual SIZE_T GetTypeHash() const override
Definition SplineMeshSceneProxy.cpp:495
Definition PrimitiveSceneProxy.h:296
Definition RHICommandList.h:455
Definition SceneInterface.h:106
Definition SceneView.h:1425
Definition ShaderCore.h:323
Definition ShaderParameters.h:56
Definition InstanceDataSceneProxy.h:413
Definition SplineMeshSceneProxy.h:165
virtual bool GetShadowMeshElement(int32 LODIndex, int32 BatchIndex, uint8 InDepthPriorityGroup, FMeshBatch &OutMeshBatch, bool bDitheredLODTransition) const override
Definition SplineMeshSceneProxy.cpp:147
virtual SIZE_T GetTypeHash() const override
Definition SplineMeshSceneProxy.cpp:117
virtual bool GetRayTracingMeshElement(int32 LODIndex, int32 BatchIndex, int32 SectionIndex, uint8 InDepthPriorityGroup, FMeshBatch &OutMeshBatch) const
Definition SplineMeshSceneProxy.cpp:196
virtual bool GetWireframeMeshElement(int32 LODIndex, int32 BatchIndex, const FMaterialRenderProxy *WireframeRenderProxy, uint8 InDepthPriorityGroup, bool bAllowPreCulledIndices, FMeshBatch &OutMeshBatch) const override
Definition SplineMeshSceneProxy.cpp:171
virtual bool GetCollisionMeshElement(int32 LODIndex, int32 BatchIndex, int32 ElementIndex, uint8 InDepthPriorityGroup, const FMaterialRenderProxy *RenderProxy, FMeshBatch &OutMeshBatch) const override
Definition SplineMeshSceneProxy.cpp:184
virtual void OnTransformChanged(FRHICommandListBase &RHICmdList) override
Definition SplineMeshSceneProxy.cpp:405
virtual bool GetMeshElement(int32 LODIndex, int32 BatchIndex, int32 ElementIndex, uint8 InDepthPriorityGroup, bool bUseSelectionOutline, bool bAllowPreCulledIndices, FMeshBatch &OutMeshBatch) const override
Definition SplineMeshSceneProxy.cpp:159
Definition SplineMeshSceneProxy.h:61
void GetElementShaderBindings(const class FSceneInterface *Scene, const FSceneView *View, const class FMeshMaterialShader *Shader, const EVertexInputStreamType InputStreamType, ERHIFeatureLevel::Type FeatureLevel, const FVertexFactory *VertexFactory, const FMeshBatchElement &BatchElement, class FMeshDrawSingleShaderBindings &ShaderBindings, FVertexInputStreamArray &VertexStreams) const
Definition SplineMeshComponent.cpp:130
void Bind(const FShaderParameterMap &ParameterMap)
Definition SplineMeshComponent.cpp:125
Definition StaticMeshSceneProxy.h:34
Definition VertexFactory.h:172
Definition VertexFactory.h:661
Definition NaniteSceneProxy.h:480
Definition SplineMeshSceneProxy.h:97
TSplineMeshSceneProxyCommon()
Definition SplineMeshSceneProxy.h:99
void SetSplineTextureCoord_RenderThread(uint32 SplineIndex, FUintVector2 TexCoord)
Definition SplineMeshSceneProxy.h:108
const FSplineMeshShaderParams & GetSplineMeshParams() const
Definition SplineMeshSceneProxy.h:106
virtual ~TSplineMeshSceneProxyCommon()
Definition SplineMeshSceneProxy.h:104
FSplineMeshShaderParams SplineParams
Definition SplineMeshSceneProxy.h:147
FSplineMeshSceneInstanceDataBuffers SplineMeshInstanceData
Definition SplineMeshSceneProxy.h:149
bool bUpdateRayTracingGeometry
Definition SplineMeshSceneProxy.h:151
FRWBuffer RayTracingDynamicVertexBuffer
Definition SplineMeshSceneProxy.h:152
void RepackSplineMeshParams(bool bUpdateGPUScene=true)
Definition SplineMeshSceneProxy.h:125
void UpdateSplineMeshParams_RenderThread(const FSplineMeshShaderParams &Params)
Definition SplineMeshSceneProxy.h:115
Type
Definition RHIFeatureLevel.h:20
Definition LocalVertexFactory.h:60
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition MeshBatch.h:232
Definition MeshBatch.h:371
Definition RHIUtilities.h:181
Definition ShaderCore.h:544
Definition SplineMeshSceneProxy.h:83
ENGINE_API void Setup(const FSplineMeshShaderParams &InSplineMeshShaderParams)
Definition SplineMeshSceneProxy.cpp:414
ENGINE_API bool Update(const FSplineMeshShaderParams &InSplineMeshShaderParams)
Definition SplineMeshSceneProxy.cpp:421
Definition SplineMeshSceneProxyDesc.h:10
Definition SplineMeshSceneProxy.h:25
static void ModifyCompilationEnvironment(const FVertexFactoryShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition SplineMeshSceneProxy.cpp:35
FSplineMeshVertexFactory(ERHIFeatureLevel::Type InFeatureLevel)
Definition SplineMeshSceneProxy.h:28
static bool ShouldCompilePermutation(const FVertexFactoryShaderPermutationParameters &Parameters)
Definition SplineMeshSceneProxy.cpp:28
DECLARE_VERTEX_FACTORY_TYPE(FSplineMeshVertexFactory)
static void GetPSOPrecacheVertexFetchElements(EVertexInputStreamType VertexInputStreamType, FVertexDeclarationElementList &Elements)
Definition SplineMeshSceneProxy.cpp:47
void Copy(const FSplineMeshVertexFactory &Other)
Definition SplineMeshSceneProxy.h:43
Definition StaticMeshSceneProxyDesc.h:13
Definition MeshMaterialShader.h:44
Definition NaniteSceneProxy.h:66