Add occlusion culling
This commit is contained in:
parent
76b95bcf67
commit
6dc6297b7b
|
@ -18,3 +18,7 @@ config/icon="res://icon.svg"
|
|||
[dotnet]
|
||||
|
||||
project/assembly_name="Thief Mission Viewer"
|
||||
|
||||
[rendering]
|
||||
|
||||
occlusion_culling/use_occlusion_culling=true
|
||||
|
|
|
@ -120,6 +120,8 @@ public partial class Mission : Node3D
|
|||
idxOffset += poly.VertexCount;
|
||||
}
|
||||
|
||||
var cellNode = new Node3D();
|
||||
|
||||
var arrMesh = new ArrayMesh();
|
||||
var arrays = new Godot.Collections.Array();
|
||||
arrays.Resize((int)Mesh.ArrayType.Max);
|
||||
|
@ -133,7 +135,14 @@ public partial class Mission : Node3D
|
|||
Mesh = arrMesh,
|
||||
CastShadow = GeometryInstance3D.ShadowCastingSetting.On
|
||||
};
|
||||
AddChild(meshInstance);
|
||||
cellNode.AddChild(meshInstance);
|
||||
|
||||
var occluderInstance = new OccluderInstance3D();
|
||||
var occluder = new ArrayOccluder3D();
|
||||
occluder.SetArrays(vertices.ToArray(), indices.ToArray());
|
||||
occluderInstance.Occluder = occluder;
|
||||
cellNode.AddChild(occluderInstance);
|
||||
|
||||
|
||||
var r = new Random();
|
||||
if (r.NextSingle() > 0.9 && cell.SphereRadius > 5.0)
|
||||
|
@ -143,7 +152,9 @@ public partial class Mission : Node3D
|
|||
Position = cell.SphereCenter.ToGodotVec3(4.0f),
|
||||
OmniRange = cell.SphereRadius * (r.NextSingle() + 1.0f) * 0.5f,
|
||||
};
|
||||
AddChild(light);
|
||||
cellNode.AddChild(light);
|
||||
}
|
||||
|
||||
AddChild(cellNode);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue