Skip to content

Commit 262beac

Browse files
authored
Improve performance
2 parents 79418d3 + 5957ba3 commit 262beac

18 files changed

Lines changed: 86 additions & 49 deletions

File tree

.vscode/settings.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"clangd.arguments": [
3-
// "--compile-commands-dir=python_examples/build",
4-
"--compile-commands-dir=examples/build",
3+
"--compile-commands-dir=python_bindings/build",
4+
// "--compile-commands-dir=examples/build",
55
"--function-arg-placeholders=false",
66
"--tweaks=-Wall",
77
"--tweaks=-Wextra",
@@ -120,7 +120,7 @@
120120
"C_Cpp.inlayHints.parameterNames.enabled": true,
121121
"C_Cpp.inlayHints.referenceOperator.enabled": true,
122122
"python.analysis.extraPaths": ["python_bindings/src/"],
123-
"cmake.sourceDirectory": "/home/robert/learning/slam_dunk/examples",
123+
"cmake.sourceDirectory": "/home/robert/projects/slam_dunk/examples",
124124
"python.analysis.exclude": [
125125
"**/build/",
126126
"**/.venv/",

python_bindings/src/slamd/bindings/__init__.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Scene:
2727
def set_transform(self, path: str, transform: numpy.ndarray) -> None:
2828
...
2929
class Visualizer:
30-
def __init__(self, name: str, port: typing.SupportsInt = 5555) -> None:
30+
def __init__(self, name: str, port: typing.SupportsInt | typing.SupportsIndex = 5555) -> None:
3131
...
3232
def add_canvas(self, name: str, canvas: Canvas) -> None:
3333
...
@@ -41,5 +41,5 @@ class Visualizer:
4141
...
4242
def scene(self, name: str) -> Scene:
4343
...
44-
def spawn_window(port: typing.SupportsInt = 5555, executable_path: str | None = None) -> None:
44+
def spawn_window(port: typing.SupportsInt | typing.SupportsIndex = 5555, executable_path: str | None = None) -> None:
4545
...

python_bindings/src/slamd/bindings/geom.pyi

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,45 @@ import collections.abc
44
import numpy
55
import typing
66
__all__ = ['Arrows', 'Box', 'CameraFrustum', 'Mesh', 'Plane', 'PointCloud', 'PolyLine', 'Sphere', 'Triad']
7-
def Arrows(starts: numpy.ndarray, ends: numpy.ndarray, colors: numpy.ndarray, thickness: typing.SupportsFloat) -> bindings._geom.Arrows:
7+
def Arrows(starts: numpy.ndarray, ends: numpy.ndarray, colors: numpy.ndarray, thickness: typing.SupportsFloat | typing.SupportsIndex) -> bindings._geom.Arrows:
88
"""
99
Create an Arrows geometry
1010
"""
1111
def Box() -> bindings._geom.Box:
1212
"""
1313
Create a Box geometry
1414
"""
15-
def CameraFrustum(intrinsics_matrix: numpy.ndarray, image_width: typing.SupportsInt, image_height: typing.SupportsInt, image: numpy.ndarray | None = None, scale: typing.SupportsFloat = 1.0) -> bindings._geom.CameraFrustum:
15+
def CameraFrustum(intrinsics_matrix: numpy.ndarray, image_width: typing.SupportsInt | typing.SupportsIndex, image_height: typing.SupportsInt | typing.SupportsIndex, image: numpy.ndarray | None = None, scale: typing.SupportsFloat | typing.SupportsIndex = 1.0) -> bindings._geom.CameraFrustum:
1616
"""
1717
Create a CameraFrustum geometry
1818
"""
1919
@typing.overload
20-
def Mesh(vertices: numpy.ndarray, vertex_colors: numpy.ndarray, triangle_indices: collections.abc.Sequence[typing.SupportsInt]) -> bindings._geom.Mesh:
20+
def Mesh(vertices: numpy.ndarray, vertex_colors: numpy.ndarray, triangle_indices: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex]) -> bindings._geom.Mesh:
2121
"""
2222
Create a SimpleMesh geometry from raw data
2323
"""
2424
@typing.overload
25-
def Mesh(vertices: numpy.ndarray, vertex_colors: numpy.ndarray, triangle_indices: collections.abc.Sequence[typing.SupportsInt], vertex_normals: numpy.ndarray) -> bindings._geom.Mesh:
25+
def Mesh(vertices: numpy.ndarray, vertex_colors: numpy.ndarray, triangle_indices: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex], vertex_normals: numpy.ndarray) -> bindings._geom.Mesh:
2626
"""
2727
Create a SimpleMesh geometry from raw data
2828
"""
29-
def Plane(normal: numpy.ndarray, point: numpy.ndarray, color: numpy.ndarray, radius: typing.SupportsFloat, alpha: typing.SupportsFloat) -> bindings._geom.Plane:
29+
def Plane(normal: numpy.ndarray, point: numpy.ndarray, color: numpy.ndarray, radius: typing.SupportsFloat | typing.SupportsIndex, alpha: typing.SupportsFloat | typing.SupportsIndex) -> bindings._geom.Plane:
3030
"""
3131
Create a Plane geometry
3232
"""
33-
def PointCloud(positions: numpy.ndarray, colors: numpy.ndarray, radii: list[float] | numpy.ndarray, min_brightness: typing.SupportsFloat = 1.0) -> bindings._geom.PointCloud:
33+
def PointCloud(positions: numpy.ndarray, colors: numpy.ndarray, radii: list[float] | numpy.ndarray, min_brightness: typing.SupportsFloat | typing.SupportsIndex = 1.0) -> bindings._geom.PointCloud:
3434
"""
3535
Create a PointCloud with per-point color and radius
3636
"""
37-
def PolyLine(points: numpy.ndarray, thickness: typing.SupportsFloat, color: numpy.ndarray, min_brightness: typing.SupportsFloat) -> bindings._geom.PolyLine:
37+
def PolyLine(points: numpy.ndarray, thickness: typing.SupportsFloat | typing.SupportsIndex, color: numpy.ndarray, min_brightness: typing.SupportsFloat | typing.SupportsIndex) -> bindings._geom.PolyLine:
3838
"""
3939
Create a PolyLine geometry
4040
"""
41-
def Sphere(radius: typing.SupportsFloat = 1.0, color: numpy.ndarray = ...) -> bindings._geom.Sphere:
41+
def Sphere(radius: typing.SupportsFloat | typing.SupportsIndex = 1.0, color: numpy.ndarray = ...) -> bindings._geom.Sphere:
4242
"""
4343
Create a Sphere geometry
4444
"""
45-
def Triad(pose: numpy.ndarray[float32[4][4]] | None = None, scale: typing.SupportsFloat = 1.0, thickness: typing.SupportsFloat = 0.10000000149011612) -> bindings._geom.Triad:
45+
def Triad(pose: numpy.ndarray[float32[4][4]] | None = None, scale: typing.SupportsFloat | typing.SupportsIndex = 1.0, thickness: typing.SupportsFloat | typing.SupportsIndex = 0.10000000149011612) -> bindings._geom.Triad:
4646
"""
4747
Create a Triad geometry
4848
"""

python_bindings/src/slamd/bindings/geom2d.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import bindings._geom
33
import numpy
44
import typing
55
__all__ = ['Circles', 'Image', 'Points', 'PolyLine']
6-
def Circles(positions: numpy.ndarray, colors: numpy.ndarray, radii: list[float] | numpy.ndarray, thickness: typing.SupportsFloat = 0.1) -> bindings._geom.Circles2D:
6+
def Circles(positions: numpy.ndarray, colors: numpy.ndarray, radii: list[float] | numpy.ndarray, thickness: typing.SupportsFloat | typing.SupportsIndex = 0.1) -> bindings._geom.Circles2D:
77
"""
88
Create a set of circles
99
"""
@@ -15,7 +15,7 @@ def Points(positions: numpy.ndarray, colors: numpy.ndarray, radii: list[float] |
1515
"""
1616
Create 2D points with per-point color and radius
1717
"""
18-
def PolyLine(points: numpy.ndarray, color: numpy.ndarray, thickness: typing.SupportsFloat) -> bindings._geom.PolyLine2D:
18+
def PolyLine(points: numpy.ndarray, color: numpy.ndarray, thickness: typing.SupportsFloat | typing.SupportsIndex) -> bindings._geom.PolyLine2D:
1919
"""
2020
Create a 2D poly line
2121
"""

python_examples/bunch_of_triads.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def random_poses(n: int, t_scale: float = 10.0) -> np.ndarray:
2121

2222

2323
def main():
24-
vis = slamd.Visualizer("poses")
24+
vis = slamd.Visualizer("poses", port=4399)
2525
scene = vis.scene("poses")
2626

2727
for i, pose_mat in enumerate(random_poses(100, 10)):

slamd/include/slamd_window/frame_buffer.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class FrameBuffer {
2424
~FrameBuffer();
2525

2626
uint32_t frame_texture(); // Resolved texture ID
27-
void rescale(size_t width, size_t height);
27+
bool rescale(size_t width, size_t height);
2828
void bind(); // Bind MSAA FBO for rendering
2929
void unbind(); // Unbind
3030
void resolve(); // Blit MSAA → resolved texture

slamd/include/slamd_window/geom/arcball_indicator.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class ArcballIndicator : public Geometry {
1515

1616
void set_arcball_zoom(float zoom);
1717
void interact();
18+
bool is_animating() const;
1819

1920
private:
2021
static glm::mat4 get_scale_mat(float scale);

slamd/include/slamd_window/state_manager.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class StateManager {
2020

2121
void try_connect(std::string ip = "127.0.0.1", ushort port = 5555);
2222

23-
void apply_updates();
23+
bool apply_updates();
2424

2525
private:
2626
void handle_initial_state(const slamd::flatb::InitialState* initial_state);

slamd/include/slamd_window/view/view.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ class View {
1212
static std::unique_ptr<View>
1313
deserialize(const flatb::View* view, std::shared_ptr<Tree> tree);
1414

15+
void mark_dirty();
16+
1517
public:
18+
bool _dirty = true;
1619
std::shared_ptr<Tree> tree;
1720
std::unordered_map<Node*, bool> tree_open;
1821
std::optional<std::string> visualize_glob = std::nullopt;

slamd/src/window/frame_buffer.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,12 @@ void FrameBuffer::resolve() {
159159
gl::glBindFramebuffer(gl::GL_FRAMEBUFFER, 0);
160160
}
161161

162-
void FrameBuffer::rescale(
162+
bool FrameBuffer::rescale(
163163
size_t width,
164164
size_t height
165165
) {
166166
if (width == current_width && height == current_height) {
167-
return;
167+
return false;
168168
}
169169

170170
current_width = width;
@@ -211,6 +211,7 @@ void FrameBuffer::rescale(
211211
width,
212212
height
213213
);
214+
return true;
214215
}
215216

216217
double FrameBuffer::aspect() const {

0 commit comments

Comments
 (0)