Merge remote-tracking branch 'origin/master' into 1.7

# Conflicts:
#	Flax.flaxproj
This commit is contained in:
Wojtek Figat
2023-10-09 12:40:47 +02:00
86 changed files with 1406 additions and 686 deletions

View File

@@ -171,6 +171,8 @@ int32 FindVertex(const MeshData& mesh, int32 vertexIndex, int32 startIndex, int3
const Float3 vNormal = mesh.Normals.HasItems() ? mesh.Normals[vertexIndex] : Float3::Zero;
const Float3 vTangent = mesh.Tangents.HasItems() ? mesh.Tangents[vertexIndex] : Float3::Zero;
const Float2 vLightmapUV = mesh.LightmapUVs.HasItems() ? mesh.LightmapUVs[vertexIndex] : Float2::Zero;
const Color vColor = mesh.Colors.HasItems() ? mesh.Colors[vertexIndex] : Color::Black; // Assuming Color::Black as a default color
const int32 end = startIndex + searchRange;
for (size_t i = 0; i < sparialSortCache.size(); i++)
@@ -184,6 +186,8 @@ int32 FindVertex(const MeshData& mesh, int32 vertexIndex, int32 startIndex, int3
const Float3 vNormal = mesh.Normals.HasItems() ? mesh.Normals[vertexIndex] : Float3::Zero;
const Float3 vTangent = mesh.Tangents.HasItems() ? mesh.Tangents[vertexIndex] : Float3::Zero;
const Float2 vLightmapUV = mesh.LightmapUVs.HasItems() ? mesh.LightmapUVs[vertexIndex] : Float2::Zero;
const Color vColor = mesh.Colors.HasItems() ? mesh.Colors[vertexIndex] : Color::Black; // Assuming Color::Black as a default color
const int32 end = startIndex + searchRange;
for (int32 v = startIndex; v < end; v++)
@@ -201,6 +205,8 @@ int32 FindVertex(const MeshData& mesh, int32 vertexIndex, int32 startIndex, int3
continue;
if (mesh.LightmapUVs.HasItems() && (vLightmapUV - mesh.LightmapUVs[v]).LengthSquared() > uvEpsSqr)
continue;
if (mesh.Colors.HasItems() && vColor != mesh.Colors[v])
continue;
// TODO: check more components?
return v;

View File

@@ -39,5 +39,19 @@ namespace FlaxEngine
View = view;
}
}
/// <summary>
/// The rendering mask for layers. Used to exclude objects from rendering (via <see cref="View"/> property).
/// </summary>
public LayersMask ViewLayersMask
{
get => View.RenderLayersMask;
set
{
var view = View;
view.RenderLayersMask = value;
View = view;
}
}
}
}

View File

@@ -176,7 +176,7 @@ void RenderView::SetProjector(float nearPlane, float farPlane, const Float3& pos
CullingFrustum = Frustum;
}
void RenderView::CopyFrom(Camera* camera, Viewport* viewport)
void RenderView::CopyFrom(const Camera* camera, const Viewport* viewport)
{
const Vector3 cameraPos = camera->GetPosition();
LargeWorlds::UpdateOrigin(Origin, cameraPos);
@@ -192,6 +192,8 @@ void RenderView::CopyFrom(Camera* camera, Viewport* viewport)
Frustum.GetInvMatrix(IVP);
CullingFrustum = Frustum;
RenderLayersMask = camera->RenderLayersMask;
Flags = camera->RenderFlags;
Mode = camera->RenderMode;
}
void RenderView::GetWorldMatrix(const Transform& transform, Matrix& world) const

View File

@@ -102,6 +102,8 @@ namespace FlaxEngine
NonJitteredProjection = Projection;
TemporalAAJitter = Float4.Zero;
RenderLayersMask = camera.RenderLayersMask;
Flags = camera.RenderFlags;
Mode = camera.RenderMode;
UpdateCachedData();
}

View File

@@ -295,10 +295,12 @@ public:
/// <param name="angle">Camera's FOV angle (in degrees)</param>
void SetProjector(float nearPlane, float farPlane, const Float3& position, const Float3& direction, const Float3& up, float angle);
// Copy view data from camera
// @param camera Camera to copy its data
// @param camera The custom viewport to use for view/projection matrices override.
void CopyFrom(Camera* camera, Viewport* viewport = nullptr);
/// <summary>
/// Copies view data from camera to the view.
/// </summary>
/// <param name="camera">The camera to copy its data.</param>
/// <param name="viewport">The custom viewport to use for view/projection matrices override.</param>
void CopyFrom(const Camera* camera, const Viewport* viewport = nullptr);
public:
FORCE_INLINE DrawPass GetShadowsDrawPassMask(ShadowsCastingMode shadowsMode) const