 
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); 
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)