diff --git a/Content/Shaders/PostProcessing.flax b/Content/Shaders/PostProcessing.flax
index 931c0b436..e34c5c185 100644
--- a/Content/Shaders/PostProcessing.flax
+++ b/Content/Shaders/PostProcessing.flax
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e477eae82ac3a988f70c59913e5eeac39438edb8191b81fe6ca970b87754cb93
-size 22689
+oid sha256:e442c2d6607e40da68e3aa9414390386d44cc7bc8c677a1f5a5e4a536857b906
+size 22688
diff --git a/Source/Editor/Surface/VisjectSurface.Input.cs b/Source/Editor/Surface/VisjectSurface.Input.cs
index 09df195eb..891750fd7 100644
--- a/Source/Editor/Surface/VisjectSurface.Input.cs
+++ b/Source/Editor/Surface/VisjectSurface.Input.cs
@@ -120,6 +120,8 @@ namespace FlaxEditor.Surface
private void UpdateSelectionRectangle()
{
+ if (Root == null)
+ return;
var p1 = _rootControl.PointFromParent(ref _leftMouseDownPos);
var p2 = _rootControl.PointFromParent(ref _mousePos);
var selectionRect = Rectangle.FromPoints(p1, p2);
diff --git a/Source/Engine/Physics/Actors/WheeledVehicle.cpp b/Source/Engine/Physics/Actors/WheeledVehicle.cpp
index 28808be17..248bffc20 100644
--- a/Source/Engine/Physics/Actors/WheeledVehicle.cpp
+++ b/Source/Engine/Physics/Actors/WheeledVehicle.cpp
@@ -191,7 +191,7 @@ void WheeledVehicle::SetThrottle(float value)
_throttle = Math::Clamp(value, -1.0f, 1.0f);
}
-float WheeledVehicle::GetThrottle()
+float WheeledVehicle::GetThrottle() const
{
return _throttle;
}
diff --git a/Source/Engine/Physics/Actors/WheeledVehicle.h b/Source/Engine/Physics/Actors/WheeledVehicle.h
index 037157158..87424fe72 100644
--- a/Source/Engine/Physics/Actors/WheeledVehicle.h
+++ b/Source/Engine/Physics/Actors/WheeledVehicle.h
@@ -545,7 +545,7 @@ public:
/// Get the vehicle throttle. It is the analog accelerator pedal value in range (0,1) where 1 represents the pedal fully pressed and 0 represents the pedal in its rest state.
///
/// The vehicle throttle.
- API_FUNCTION() float GetThrottle();
+ API_FUNCTION() float GetThrottle() const;
///
/// Sets the input for vehicle steering. Steer is the analog steer value in range (-1,1) where -1 represents the steering wheel at left lock and +1 represents the steering wheel at right lock.
diff --git a/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp b/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp
index bacd976a1..5805301ff 100644
--- a/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp
+++ b/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp
@@ -496,7 +496,9 @@ protected:
#define PxHitFlagEmpty (PxHitFlags)0
#define SCENE_QUERY_FLAGS (PxHitFlag::ePOSITION | PxHitFlag::eNORMAL | PxHitFlag::eFACE_INDEX | PxHitFlag::eUV)
-#define SCENE_QUERY_SETUP(blockSingle) auto scenePhysX = (ScenePhysX*)scene; if (scene == nullptr) return false; \
+#define SCENE_QUERY_SETUP(blockSingle) PROFILE_CPU(); \
+ auto scenePhysX = (ScenePhysX*)scene; \
+ if (scene == nullptr) return false; \
PxQueryFilterData filterData; \
filterData.flags |= PxQueryFlag::ePREFILTER; \
filterData.data.word0 = layerMask; \
diff --git a/Source/Engine/Renderer/ColorGradingPass.cpp b/Source/Engine/Renderer/ColorGradingPass.cpp
index caa5ee44c..bbb45ef4c 100644
--- a/Source/Engine/Renderer/ColorGradingPass.cpp
+++ b/Source/Engine/Renderer/ColorGradingPass.cpp
@@ -194,6 +194,7 @@ GPUTexture* ColorGradingPass::RenderLUT(RenderContext& renderContext)
// Check if LUT parameter hasn't been changed since the last time
if (Platform::MemoryCompare(&colorGradingBuffer.CachedData , &data, sizeof(Data)) == 0 &&
colorGradingBuffer.Mode == toneMapping.Mode &&
+ Engine::FrameCount > 30 && // Skip caching when engine is starting TODO: find why this hack is needed
colorGradingBuffer.LutTexture == lutTexture)
{
// Resue existing texture
diff --git a/Source/Engine/Renderer/PostProcessingPass.cpp b/Source/Engine/Renderer/PostProcessingPass.cpp
index 0945e74de..a9eba14d2 100644
--- a/Source/Engine/Renderer/PostProcessingPass.cpp
+++ b/Source/Engine/Renderer/PostProcessingPass.cpp
@@ -367,15 +367,19 @@ void PostProcessingPass::Render(RenderContext& renderContext, GPUTexture* input,
// Bloom
auto tempDesc = GPUTextureDescription::New2D(w2, h2, bloomMipCount, output->Format(), GPUTextureFlags::ShaderResource | GPUTextureFlags::RenderTarget | GPUTextureFlags::PerMipViews);
- auto bloomBuffer1 = RenderTargetPool::Get(tempDesc);
- RENDER_TARGET_POOL_SET_NAME(bloomBuffer1, "PostProcessing.Bloom");
- auto bloomBuffer2 = RenderTargetPool::Get(tempDesc);
- RENDER_TARGET_POOL_SET_NAME(bloomBuffer2, "PostProcessing.Bloom");
-
- for (int32 mip = 0; mip < bloomMipCount; mip++)
+ GPUTexture* bloomBuffer1 = nullptr, *bloomBuffer2 = nullptr;
+ if (useBloom || useLensFlares)
{
- context->Clear(bloomBuffer1->View(0, mip), Color::Transparent);
- context->Clear(bloomBuffer2->View(0, mip), Color::Transparent);
+ bloomBuffer1 = RenderTargetPool::Get(tempDesc);
+ bloomBuffer2 = RenderTargetPool::Get(tempDesc);
+ RENDER_TARGET_POOL_SET_NAME(bloomBuffer1, "PostProcessing.Bloom");
+ RENDER_TARGET_POOL_SET_NAME(bloomBuffer2, "PostProcessing.Bloom");
+
+ for (int32 mip = 0; mip < bloomMipCount; mip++)
+ {
+ context->Clear(bloomBuffer1->View(0, mip), Color::Transparent);
+ context->Clear(bloomBuffer2->View(0, mip), Color::Transparent);
+ }
}
if (useBloom)
diff --git a/Source/Shaders/PostProcessing.shader b/Source/Shaders/PostProcessing.shader
index 851d31e38..aa70833d2 100644
--- a/Source/Shaders/PostProcessing.shader
+++ b/Source/Shaders/PostProcessing.shader
@@ -650,7 +650,7 @@ float4 PS_Composite(Quad_VS2PS input) : SV_Target
}
else
{
- color = Input0.Sample(SamplerLinearClamp, uv);
+ color = Input0.Sample(SamplerPointClamp, uv);
}
// Lens Flares