Skip to content

Commit

Permalink
Manual merge #27
Browse files Browse the repository at this point in the history
  • Loading branch information
Aleksei Rusev committed Dec 30, 2024
1 parent 70c95f6 commit 5170397
Show file tree
Hide file tree
Showing 61 changed files with 3,392 additions and 780 deletions.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/target
Cargo.lock
.idea
.vscode
build
backup
otls/backup
Expand All @@ -9,6 +10,8 @@ bindgen/hapi-bindgen/bindings.rs
env.ps1
**/*target
_build
_tmp
cpp
*.hip*
.cargo
_*
_*
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
"cSpell.enabled": false,
"python.languageServer": "Pylance",
"python.analysis.extraPaths": [
"C:/Houdini/19.0.455/houdini/python3.7libs"
"C:/Houdini/20.5.445/houdini/python3.11libs"
],
"rust-analyzer.linkedProjects": [
".\\apps\\viewport\\Cargo.toml"
],
"rust-analyzer.showUnlinkedFileNotification": false,
}
43 changes: 36 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,59 @@
# hapi-rs changelog

## [0.11.0]

- Update to Houdini 20.5.445
- (new in 20.5) Add APIs for setting/getting of unique attribute values
- (new in 20.5) Add initial support for async attribute access (new in 20.5). WIP and not working properly yet.
- (new in 20.5) Add new shared-memory HARS server type
- (new in 20.5) Add HAPI_GetMessageNodeIds and HAPI_GetNodeCookResult APIs
- (new in 20.5) Add performance monitor APIs
- Fixed some issue with PDG blocking cooking
- `quick_session` now uses shared-memory server type instead of named-pipe.
- An experimental Bevy example app.
- Bunch os other small improvements and cleanups
- Mark `Attribute: Send` (by @BerKai97)

**Some public API have been changed (both on the SideFX and this library side)**

## [0.10.0]

- **Minimal** Houdini version bumped to 20.0.625.
- Support new attribute APIs and add some previously missing APIs.
- **Serveral (minimal) public APIs changed**.
- Other fixes and cleanup


## [0.9.3]

- Bump Houdini version to `19.5.716`.
- Add API for working with parameter tags.
- String parameters of type Node can take `NodeHandle` values.
- More PDG WorkItem APIs.
- Expose cache APIs.

## [0.9.2]

### New

- Add `NumericAttribute::read_into()` method for reusing a buffer when reading attribute data.
- Reintroduced an internal reentrant mutex to make sure 2 or more API calls are atomic.
- Add a demo of OpenGL viewer
- Update dependencies

## [0.9.1]

### Changed:

- Remove internal Mutex from `Session`.
- Slightly improved `Parameter` APIs.
- Use `StringHandle` instead of `i32`.
- Update examples.
- Minor cleanups and improvements across the crate.

## [0.9.0]

### New

- New builder pattern for creating nodes.
- New `start_houdini_server` function will launch Houdini application
with engine server running in it. See _live_session.rs_ example.
Expand All @@ -43,8 +66,8 @@
- New `Parameter::save_parm_file` to save the file from the parameter to disk.
- Can now delete geometry attributes.


### Changed

- Simplified `Session::create_node` only take node name now. Use builder pattern for
more options.
- `connect_to_pipe` now take an optional timeout parameter, and will try to connect multiple times
Expand All @@ -55,35 +78,41 @@
- Add support for creating nodes for more asset types with less boilerplate code.
- Fixed setting of array geometry attributes.



## [0.8.0]

### Changed

- AssetLibrary::try_create_first() can now crate nodes other than of Object type.
- Functions taking optional parent (`Option<NodeHandle>`) are now generic and can take `HoudiniNode` too.
- Improve the error type handling and printing.
- Remove `CookOptions` arg from `HoudiniNode::cook`, instead there's new `HoudiniNode::cook_with_options`.
- Add lots of `debug_assert!` for input validation.

### New

- `ManagerType` enum represents a network root node.
- Add several missing geometry APIs.

## [0.7.0]

## Changed

- Reworked parameter APIs
- Separate `get/set` and `get_array/set_array` methods
- `get/set` now take an index of a parameter tuple.
- Eliminate extra String clone for `set_*` string parameters.
- Separate `get/set` and `get_array/set_array` methods
- `get/set` now take an index of a parameter tuple.
- Eliminate extra String clone for `set_*` string parameters.

## [0.6.0]

### New

- Switch to HAPI-5.0 (Houdini 19.5) API.
- Implement most common PDG APIs for event-based (async) cooking.
- Builder pattern for `SessionOption`
- Example of event-based cooking of PDG network.

### Changed

- Make `DataArray` types public.
- Session creation APIs now require `SessionOptions` argument.
- Add new metadata to `Session` handle with extra information about connection.
Expand Down
28 changes: 13 additions & 15 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,26 @@ repository = "https://github.com/alexxbb/hapi-rs/"
keywords = ["vfx", "graphics", "gamedev", "houdini"]
categories = ["graphics", "game-development"]
readme = "README.md"
version = "0.10.0"
version = "0.11.0"
authors = ["Aleksei Rusev <[email protected]>"]
edition = "2021"
license = "MIT"
exclude = [
"otls/*",
]
include = ["/src", "build.rs", "LICENSE"]

[dependencies]
log = "0.4.14"
paste = "1.0.6"
parking_lot = "0.12.1"
duplicate = { version = "1.0.0", features = [], default-features = false }
log = "0.4.22"
paste = "1.0.15"
parking_lot = "0.12.3"
duplicate = { version = "2.0.0", features = [], default-features = false }
debug-ignore = "1.0.5"
tempfile = "3.3.0"
tempfile = "3.13.0"

[dev-dependencies]
once_cell = "1.5.2"
env_logger = "0.10.0"
once_cell = "1.20.2"
env_logger = "0.11.5"
prettytable-rs = "0.10.0"
fastrand = "1.6.0"
anyhow = "1.0.66"
argh = "0.1.9"
ctrlc = "3.2.5"
fastrand = "2.1.1"
anyhow = "1.0.91"
argh = "0.1.12"
ctrlc = "3.4.5"
tinyjson = "2.5.1"
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) [2022] [Aleksei Rusev]
Copyright (c) [2024] [Aleksei Rusev]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
33 changes: 33 additions & 0 deletions apps/bevy/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
[package]
name = "hapi-bevy"
version = "0.1.0"
edition = "2021"

[dependencies]
hapi-rs = { path = "../..", version = "*" }
bevy_panorbit_camera = "0.21.2"


[features]
dev = ["bevy/dynamic_linking"]


[dependencies.bevy]
version = "0.15.0"
default-features = false
features = [
"bevy_window",
"bevy_winit",
"bevy_pbr",
"bevy_ui",
"default_font",
"tonemapping_luts",
"ktx2",
"png",
"bevy_state",
"bevy_dev_tools",
"multi_threaded"
]

[profile.dev.package."*"]
opt-level = 3
3 changes: 3 additions & 0 deletions apps/bevy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# A simple experimental Bevy app which can load HDA geometry and render it.

`cargo run --release`
Binary file not shown.
Binary file not shown.
Binary file added apps/bevy/assets/hda/geo.hda
Binary file not shown.
Loading

0 comments on commit 5170397

Please sign in to comment.