Crate xc3_wgpu

Source
Expand description

§xc3_wgpu

A Xenoblade Chronicles model rendering library.

Xenoblade 1 DE, Xenoblade 2, and Xenoblade 3 are all supported with Xenoblade 1 DE receiving the least testing.

§Getting Started

The first step is to initialize an Renderer. This only needs to be done once since the renderer can be updated using methods as screen size and parameters change. The initial size should match the current window dimensions.

Models and maps are all loaded from the same xc3_model types. The shader database is optional but will improve rendering accuracy.

In each frame, render the ModelGroup using Renderer::render_models.

use xc3_wgpu::{MonolibShaderTextures, Renderer};
use xc3_model::shader_database::ShaderDatabase;

let monolib_shader = MonolibShaderTextures::from_file(&device, &queue, "monolib/shader");
let renderer = Renderer::new(&device, &queue, 1920, 1080, wgpu::TextureFormat::Bgra8Unorm, &monolib_shader);

let database = ShaderDatabase::from_file("xc3.bin")?;

let root = xc3_model::load_model("ch01011013.wimdo", Some(&database))?;
let groups = xc3_wgpu::load_model(&device, &queue, &[root], &monolib_shader);

let roots = xc3_model::load_map("ma59a.wismhd", Some(&database))?;
let groups = xc3_wgpu::load_map(&device, &queue, &roots, &monolib_shader);

§Animation

Skeletal animations should use ModelGroup::update_bone_transforms and the Animation type from xc3_model.

Structs§

CameraData
Collision
Mesh
Model
ModelBuffers
ModelGroup
Models
MonolibShaderTextures
Texture resources from the game’s monolib/shader folder.
Renderer

Enums§

RenderMode

Constants§

FEATURES
The features required by Renderer.
LIMITS
Modified limits required by Renderer.

Functions§

load_collisions
load_map
load_model