Crate kiss3d [] [src]

Kiss3d

Keep It Simple, Stupid 3d graphics engine.

This library is born from the frustration in front of the fact that today’s 3D graphics library are:

Kiss3d is not designed to be feature-complete or fast. It is designed to be able to draw simple geometric figures and play with them with one-liners.

Features

Most features are one-liners.

As an example, having a red, rotating cube with the light attached to the camera is as simple as:

extern crate kiss3d;
extern crate nalgebra as na;

use na::{Vector3, UnitQuaternion};
use kiss3d::window::Window;
use kiss3d::light::Light;

fn main() {
    let mut window = Window::new("Kiss3d: cube");
    let mut c      = window.add_cube(1.0, 1.0, 1.0);

    c.set_color(1.0, 0.0, 0.0);

    window.set_light(Light::StickToCamera);

    let rot = UnitQuaternion::from_axis_angle(&Vector3::y_axis(), 0.014);

    while window.render() {
        c.prepend_to_local_rotation(&rot);
    }
}

Some controls are handled by default by the engine (they can be overridden by the user):

Compilation

You will need the last stable build of the rust compiler and the official package manager: cargo.

Simply add the following to your Cargo.toml file:

[dependencies]
kiss3d = "0.8"

Contributions

I’d love to see people improving this library for their own needs. However, keep in mind that Kiss3d is KISS. One-liner features (from the user point of view) are preferred.

Modules

builtin

Built-in geometries, shaders and effects.

camera

Camera trait with some common implementations.

light

Lights.

line_renderer

A batched line renderer.

loader

File loading.

point_renderer

A batched point renderer.

post_processing

Post-processing effects.

resource

GPU resource managers

scene

Everything related to the scene graph.

text

Text rendering.

window

The window, and things to handle the rendering loop and events.