Enabling CI and fixing associated issues. (#20)
Fixing CI related issues.
This commit is contained in:
Родитель
ec6c446d1b
Коммит
c21edd1763
|
@ -28,7 +28,7 @@ The visual profiler provides four metrics around frame performance and two metri
|
|||
| Frame | Frame time represents the total amount of time spent generating one frame of the app. Since both the Game and Draw threads sync up before finishing a frame, frame time is often close to the time being shown in one of these threads. |
|
||||
| Game | If Frame time is close to Game time, the app's performance is likely being bottlenecked (negatively impacted) by the game thread. The game thread is resposible for most app logic, especially Blueprint logic. |
|
||||
| Draw | If Frame time is close to Draw time, the game's performance is likely being bottlenecked by the rendering thread. The rendering thread is responsible for deciding what to render and submitting work to the GPU. |
|
||||
| GPU | GPU time measures how long the video card took to render the scene. Since GPU time is synced to the frame, it will likely be similar to Frame time. |
|
||||
| GPU | GPU time measures how long the video card took to render the scene. Since GPU time is synced to the frame, it will likely be similar to Frame time. Note, this value is not available on all rendering hardware interfaces. |
|
||||
| Draw Calls | Draw calls can be thought of as the number on times a graphics API (such as [DirectX](https://en.wikipedia.org/wiki/DirectX)) is told to render an object. |
|
||||
| Polys | Represents the number of polygons which are currently being submitted to the graphics API for rendering. This number may vary slightly to actual number being rendered due to frustum clipping or geometry generation on the GPU. |
|
||||
|
||||
|
|
|
@ -42,8 +42,16 @@ None
|
|||
|
||||
## Known issues
|
||||
|
||||
### Performance issues when updating the spatial mesh.
|
||||
### Ambient cubemaps on materials may look more pixelated at higher roughness values.
|
||||
|
||||
This is a know engine issue, a fix is slated for a future engine release.
|
||||
The ambient cubemaps included with the engine, and used for the examples, no longer use angular filtering. Which means they no longer look "blurry" at higher mip map chain values. Materials at high roughness values use textures higher up the mip map chain. The final fix introduces explicit angular filtering for ambient cubemaps (UE-118357) and is scheduled for 4.27.1.
|
||||
|
||||
### The Visual Profiler with the D3D12 RHI doesn't update GPU time.
|
||||
|
||||
The OpenXR plugin allows Hololens 2 to use the DirectX 12 RHI (render hardware interface) which [doesn't support GPU time queries](https://github.com/EpicGames/UnrealEngine/blob/99b6e203a15d04fc7bbbf554c421a985c1ccb8f1/Engine/Source/Runtime/D3D12RHI/Private/D3D12RHIPrivate.h#L249). At the moment GPU times will not be displayed on HoloLens 2 when using the OpenXR plugin.
|
||||
|
||||
### Performance issues when rendering the spatial mesh with the checker material.
|
||||
|
||||
This is a know 4.27.x engine issue, a fix is being investigated.
|
||||
|
||||
If you run into issues caused by Graphics Tools or have questions about how to do something, please [file an issue](https://github.com/microsoft/MixedReality-GraphicsTools-Unreal/issues/new) on the GitHub repo.
|
||||
|
|
Двоичные данные
GraphicsToolsProject/Content/Test.umap
Двоичные данные
GraphicsToolsProject/Content/Test.umap
Двоичный файл не отображается.
|
@ -5,6 +5,8 @@
|
|||
|
||||
#include "GraphicsTools.h"
|
||||
|
||||
#include "Materials/MaterialInstanceDynamic.h"
|
||||
|
||||
UGTMeshOutlineComponent::UGTMeshOutlineComponent()
|
||||
{
|
||||
static ConstructorHelpers::FObjectFinder<UMaterialInterface> OutlineMaterialFinder(TEXT("/GraphicsTools/Materials/M_GTDefaultOutline"));
|
||||
|
|
|
@ -76,7 +76,7 @@ AGTVisualProfiler::AGTVisualProfiler()
|
|||
static const FVector BarPivot(0, 1, 0);
|
||||
static const FVector BarSize(0.004f, 0.02f, 1);
|
||||
static const FRotator QuadRotation(90, 0, 0);
|
||||
static const FString ZeroMs(TEXT("0.00 ms"));
|
||||
static const FString UnavailableLabel(TEXT("Unavailable"));
|
||||
static const FLinearColor BackPlateColor(FColor(80, 80, 80)); // Dark Gray
|
||||
static const FLinearColor FrameTimeColor(FColor(0, 164, 239)); // Vivid Cerulean
|
||||
static const FLinearColor GameThreadColor(FColor(255, 185, 0)); // Selective Yellow
|
||||
|
@ -94,9 +94,10 @@ AGTVisualProfiler::AGTVisualProfiler()
|
|||
Location.Y = PrefixYOffset;
|
||||
CreateText(TEXT("FrameTimeLabelPrefix"), RootComponent, Location, TEXT("Frame: "), SortPriorityMed);
|
||||
Location.Y = LabelYOffset;
|
||||
FrameTimeLabel = CreateText(TEXT("FrameTimeLabel"), RootComponent, Location, ZeroMs, SortPriorityMed);
|
||||
FrameTimeLabel = CreateText(TEXT("FrameTimeLabel"), RootComponent, Location, UnavailableLabel, SortPriorityMed);
|
||||
Location.Y = PivotYOffset;
|
||||
FrameTimePivot = CreateScene<USceneComponent>(TEXT("FrameTimePivot"), RootComponent, Location, QuadRotation);
|
||||
FrameTimePivot->SetRelativeScale3D(FVector(0, 1, 0));
|
||||
CreateQuad(TEXT("FrameTimePivotQuad"), FrameTimePivot, BarPivot, BarSize, SortPriorityMed, FrameTimeColor, FRotator::ZeroRotator);
|
||||
|
||||
Location.Z = Location.Z - HeightZOffset;
|
||||
|
@ -104,9 +105,10 @@ AGTVisualProfiler::AGTVisualProfiler()
|
|||
Location.Y = PrefixYOffset;
|
||||
CreateText(TEXT("GameThreadTimeLabelPrefix"), RootComponent, Location, TEXT("Game: "), SortPriorityMed);
|
||||
Location.Y = LabelYOffset;
|
||||
GameThreadTimeLabel = CreateText(TEXT("GameThreadTimeLabel"), RootComponent, Location, ZeroMs, SortPriorityMed);
|
||||
GameThreadTimeLabel = CreateText(TEXT("GameThreadTimeLabel"), RootComponent, Location, UnavailableLabel, SortPriorityMed);
|
||||
Location.Y = PivotYOffset;
|
||||
GameThreadTimePivot = CreateScene<USceneComponent>(TEXT("GameThreadTimePivot"), RootComponent, Location, QuadRotation);
|
||||
GameThreadTimePivot->SetRelativeScale3D(FVector(0, 1, 0));
|
||||
CreateQuad(TEXT("GameTimePivotQuad"), GameThreadTimePivot, BarPivot, BarSize, SortPriorityMed, GameThreadColor, FRotator::ZeroRotator);
|
||||
|
||||
Location.Z = Location.Z - (HeightZOffset * 0.5f);
|
||||
|
@ -120,9 +122,10 @@ AGTVisualProfiler::AGTVisualProfiler()
|
|||
Location.Y = PrefixYOffset;
|
||||
CreateText(TEXT("RenderThreadTimeLabelPrefix"), RootComponent, Location, TEXT("Draw: "), SortPriorityMed);
|
||||
Location.Y = LabelYOffset;
|
||||
RenderThreadTimeLabel = CreateText(TEXT("RenderThreadTimeLabel"), RootComponent, Location, ZeroMs, SortPriorityMed);
|
||||
RenderThreadTimeLabel = CreateText(TEXT("RenderThreadTimeLabel"), RootComponent, Location, UnavailableLabel, SortPriorityMed);
|
||||
Location.Y = PivotYOffset;
|
||||
RenderThreadTimePivot = CreateScene<USceneComponent>(TEXT("RenderThreadTimePivot"), RootComponent, Location, QuadRotation);
|
||||
RenderThreadTimePivot->SetRelativeScale3D(FVector(0, 1, 0));
|
||||
CreateQuad(
|
||||
TEXT("RenderThreadTimePivotQuad"), RenderThreadTimePivot, BarPivot, BarSize, SortPriorityMed, RenderThreadColor,
|
||||
FRotator::ZeroRotator);
|
||||
|
@ -132,9 +135,10 @@ AGTVisualProfiler::AGTVisualProfiler()
|
|||
Location.Y = PrefixYOffset;
|
||||
CreateText(TEXT("GPUTimeLabelPrefix"), RootComponent, Location, TEXT("GPU: "), SortPriorityMed);
|
||||
Location.Y = LabelYOffset;
|
||||
GPUTimeLabel = CreateText(TEXT("GPUTimeLabel"), RootComponent, Location, ZeroMs, SortPriorityMed);
|
||||
GPUTimeLabel = CreateText(TEXT("GPUTimeLabel"), RootComponent, Location, UnavailableLabel, SortPriorityMed);
|
||||
Location.Y = PivotYOffset;
|
||||
GPUTimePivot = CreateScene<USceneComponent>(TEXT("GPUTimePivot"), RootComponent, Location, QuadRotation);
|
||||
GPUTimePivot->SetRelativeScale3D(FVector(0, 1, 0));
|
||||
CreateQuad(TEXT("GPUTimePivotQuad"), GPUTimePivot, BarPivot, BarSize, SortPriorityMed, GPUTimeColor, FRotator::ZeroRotator);
|
||||
|
||||
Location.Z = Location.Z - HeightZOffset;
|
||||
|
|
|
@ -137,7 +137,7 @@ void SmoothNormals(const TArray<FVector>& Vertices, TArray<FVector>& Normals, TA
|
|||
|
||||
bool BuildOutlineMesh(UProceduralMeshComponent* ProceduralMesh, UGTMeshOutlineComponent* OutlineMesh)
|
||||
{
|
||||
FStaticMeshRenderData* RenderData = OutlineMesh->GetStaticMesh()->RenderData.Get();
|
||||
FStaticMeshRenderData* RenderData = OutlineMesh->GetStaticMesh()->GetRenderData();
|
||||
|
||||
if (RenderData == nullptr)
|
||||
{
|
||||
|
@ -279,7 +279,7 @@ FReply FGTMeshOutlineComponentDetails::ClickedOnConvertToStaticMesh()
|
|||
UStaticMesh* StaticMesh = NewObject<UStaticMesh>(Package, MeshName, RF_Public | RF_Standalone);
|
||||
StaticMesh->InitResources();
|
||||
|
||||
StaticMesh->LightingGuid = FGuid::NewGuid();
|
||||
StaticMesh->SetLightingGuid(FGuid::NewGuid());
|
||||
|
||||
// Add source to new StaticMesh.
|
||||
FStaticMeshSourceModel& SrcModel = StaticMesh->AddSourceModel();
|
||||
|
@ -298,7 +298,7 @@ FReply FGTMeshOutlineComponentDetails::ClickedOnConvertToStaticMesh()
|
|||
if (!ProceduralMeshComponent->bUseComplexAsSimpleCollision)
|
||||
{
|
||||
StaticMesh->CreateBodySetup();
|
||||
UBodySetup* NewBodySetup = StaticMesh->BodySetup;
|
||||
UBodySetup* NewBodySetup = StaticMesh->GetBodySetup();
|
||||
NewBodySetup->BodySetupGuid = FGuid::NewGuid();
|
||||
NewBodySetup->AggGeom.ConvexElems = ProceduralMeshComponent->ProcMeshBodySetup->AggGeom.ConvexElems;
|
||||
NewBodySetup->bGenerateMirroredCollision = false;
|
||||
|
@ -321,7 +321,7 @@ FReply FGTMeshOutlineComponentDetails::ClickedOnConvertToStaticMesh()
|
|||
// Copy materials to new mesh.
|
||||
for (auto* Material : UniqueMaterials)
|
||||
{
|
||||
StaticMesh->StaticMaterials.Add(FStaticMaterial(Material));
|
||||
StaticMesh->GetStaticMaterials().Add(FStaticMaterial(Material));
|
||||
}
|
||||
|
||||
// Set the imported version before calling the build.
|
||||
|
|
Двоичный файл не отображается.
Двоичный файл не отображается.
|
@ -0,0 +1,2 @@
|
|||
DisableFormat: true
|
||||
SortIncludes: false
|
|
@ -11,7 +11,7 @@ namespace MicrosoftOpenXR
|
|||
{
|
||||
SingleProjectionLayer(XrViewConfigurationType InViewConfigType, XrEnvironmentBlendMode InEnvBlendMode, XrSpace InSpace,
|
||||
TArray<XrCompositionLayerProjectionView> InViews)
|
||||
: ViewConfigType(InViewConfigType), EnvBlendMode(InEnvBlendMode), Space(InSpace), Views(std::move(InViews))
|
||||
: ViewConfigType(InViewConfigType), Space(InSpace), EnvBlendMode(InEnvBlendMode), Views(std::move(InViews))
|
||||
{
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче