violet
Simple, cross-platform graphics API
Loading...
Searching...
No Matches
violet

Hello Triangle

Introduction

Violet is an incredibly tiny (<300K) cross-platform low level graphics API. Violet makes use of Violet Shading Language (VSL) to enable quickly authoring cross-platform shaders.

Buffers

Buffers in Violet can contain any data used between the CPU and GPU. Buffers can then be bound sequentially (with encoder.set_vertex_buffer or encoder.set_fragment_buffer) in the order in which they appear in the shader code.

struct View {
float4 view_matrix[16];
float4 proj_matrix[16];
};
View camera;
Handle<Buffer> view_buffer = renderer.create_buffer(&camera, sizeof(View));
render_encoder.set_vertex_buffer(view_buffer); // View is available in shader

Features

Features

Violet Shading Language (VSL)

Violet provides a shading language for easily authoring cross-platform shaders.

struct VertexIn {
float2 position @attribute(position);
float3 color @attribute(color);
};
struct VertexOut {
float4 position @position;
float4 color @color;
};
VertexOut vertex_main(VertexIn input) @vertex {
VertexOut output;
output.position = float4(input.position.x, input.position.y, 0.0, 1.0);
output.color = float4(input.color, 1.0);
return output;
}
float4 fragment_main(VertexOut input) @fragment {
return input.color;
}

Getting Started

Benchmarks

Compatibility

Platform API Status
Windows D3D11 🚧 In-Progress
macOS and iOS Metal ✅ Implemented
Linux OpenGL4 ❌ Planned
Web WebGL2 🚧 In-Progress

Violet has been tested the following compilers:

  • Clang 15.0.0 (macOS)
  • GCC 11.4.0 (Linux)
  • MSVC 19.41.34120 (Windows)