• Stars
    star
    181
  • Rank 205,713 (Top 5 %)
  • Language
    Rust
  • License
    Other
  • Created over 1 year ago
  • Updated 10 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Native Rust reimplementation of Inochi2D

Inox2D

Officially supported experimental Rust port of Inochi2D.   Discord

 

The Inox2D workgroup provides support in the #inox2d channel on the Inochi2D Discord.

Currently this library and the specification is in a prototype state, it is not recommended to use this library in production.

 

Rigging

If you're a model rigger you may want to check out Inochi Creator, the official Inochi2D rigging app in development.
This repository is purely for developers and is not useful if you're an end user.

 

Status

INP parsing works completely fine, but not INX (bad indexes, wrong reading?).

Both renderers (OpenGL, WGPU) now work on all models we could test them on (Aka, Midori, Arch-chan).

Support for parameters, physics and animations is on the way!

Feature tree

  • Parsing
    • INP format
  • Rendering
    • OpenGL
      • WASM (WebGL)
    • WGPU
      • WASM (WebGL)
    • Draw List
  • Parameters
    • Deforms (mesh vertex offsets)
    • Values (node transform offsets)
    • Z-sort
  • Physics
  • Animations

INP parsing

cargo run -p inox2d --features owo --example parse-inp path/to/puppet.inp

Parsed foxgirl

OpenGL renderer

cargo run -p render-opengl path/to/puppet.inp

OpenGL-rendered Arch-chan

WebGL demo

See the render_webgl example.

WebGL-rendered Aka

WGPU renderer

cargo run -p render-wgpu path/to/puppet.inp

WGPU-rendered Arch-chan

 

Implementation

Inox2D aims at supporting all features currently present in the standard D implementation.

Inox2D is designed to be extensible. Nodes are extensible through a generic InoxData<T> enum which has a Custom(T) variant. Every other part of the library accounts for it: the OpenGL renderer accepts any struct that implements the CustomRenderer trait to be able to render your custom nodes, and the deserialization functions accept generic Fns for deserialization of custom nodes when it is relevant.

 

Optimization on OpenGL

Implementation language OpenGL calls
Inochi2D reference* D 3076
Link Mauve's inochi2d Rust 551
Inox2D Rust 1639

The OpenGL renderer on Inox2D has a few simple optimizations that result in fewer OpenGL calls:

  • it uses a simple OpenGL cache to avoid making calls when the resulting state won't change,
  • it only uploads a model's part textures once instead of every frame.

* Reference implementation is subject to change as optimisation passes are done, additionally code is more geared towards readability than performance for implementers to be able to more easily use it as reference.

 

License

This project is licensed under the 2-Clause BSD license. See LICENSE for details.

More Repositories

1

inochi2d

Inochi2D reference implementation aimed at rendering 2D puppets that can be animated in real-time (using eg. facial capture).
D
1,218
star
2

inochi-creator

Inochi2D Rigging Application
D
735
star
3

inochi-session

Application that allows streaming with Inochi2D puppets
D
257
star
4

inochi-viewer

A simple app to view Inochi2D puppets
D
33
star
5

inochi2d-ts

TypeScript implementation of Inochi2D using Three.js
TypeScript
25
star
6

example-models

Example Models for Inochi2D
23
star
7

inochi2d-c

A layer for using Inochi2D with non-D programming languages via a C ABI
D
22
star
8

libsoba

[Heavily WIP] UI library for D
D
19
star
9

numem

No-GC memory managment utilities for DLang
D
15
star
10

inochi2d-rs

Rust bindings for Inochi2D
Rust
14
star
11

facetrack-d

Integration for various face tracking APIs for D.
D
12
star
12

psd-d

Experimental PSD loader made for Inochi Creator
D
10
star
13

com.inochi2d.inochi2d-unity

Inochi2D for Unity [HEAVILY WIP]
C#
10
star
14

gimp-vtuber-scripts

Scripts for automating the process of preparing vtuber models with the GNU Image Manipulation Program
Scheme
8
star
15

dportals

D implementation of xdg-desktop-portals
D
7
star
16

inpunpack

Pack and unpack INP and INX files
D
5
star
17

kra-d

Experimental KRA loader made for Inochi Creator
D
5
star
18

gitver

Generate D version enums from git tags
D
5
star
19

inochi2d-docs

Documentation for Inochi2D
5
star
20

inmath

Inochi2D Math Library (fork of gl3n)
D
5
star
21

inbf

Inochi2D Binary Format
D
4
star
22

clip-d

Experimental CLIP loader made for Inochi Creator
D
4
star
23

vts-d

VTube Studio API for D using vibe-d
D
4
star
24

soba-vector

Multi-backend vector rendering library for D.
4
star
25

branding

Branding resources for Inochi2D
4
star
26

inui

Shared UI handling code for official Inochi2D applications
D
3
star
27

cu

Scripting language for D
D
3
star
28

msdf-d

Port of msdfgen for D
D
3
star
29

Inochi2D.github.io

Inochi2D website
CSS
2
star
30

obs-d

D Bindings to libobs
D
2
star
31

syphon-d

D Bindings for the Syphon frame sharing library
D
1
star
32

bindbc-spout2

SpoutLibrary binding for D
D
1
star
33

pipewire-d

D
1
star
34

i2d-cairo

BetterC bindings to the Cairo vector rendering library.
D
1
star
35

inochi2d-gallium

Partial Intel on Windows support for Inochi2D via Gallium and Zink
1
star