Major reorg
This commit is contained in:
+20
-11
@@ -4,6 +4,7 @@ import "core:math"
|
||||
|
||||
import draw ".."
|
||||
|
||||
//INTERNAL
|
||||
SMOOTH_CIRCLE_ERROR_RATE :: 0.1
|
||||
|
||||
auto_segments :: proc(radius: f32, arc_degrees: f32) -> int {
|
||||
@@ -22,11 +23,18 @@ auto_segments :: proc(radius: f32, arc_degrees: f32) -> int {
|
||||
|
||||
// Color is premultiplied: the tessellated fragment shader passes it through directly
|
||||
// and the blend state is ONE, ONE_MINUS_SRC_ALPHA.
|
||||
solid_vertex :: proc(position: draw.Vec2, color: draw.Color) -> draw.Vertex {
|
||||
return draw.Vertex{position = position, color = draw.premultiply_color(color)}
|
||||
//INTERNAL
|
||||
solid_vertex :: proc(position: draw.Vec2, color: draw.Color) -> draw.Vertex_2D {
|
||||
return draw.Vertex_2D{position = position, color = draw.premultiply_color(color)}
|
||||
}
|
||||
|
||||
emit_rectangle :: proc(x, y, width, height: f32, color: draw.Color, vertices: []draw.Vertex, offset: int) {
|
||||
//INTERNAL
|
||||
emit_rectangle :: proc(
|
||||
x, y, width, height: f32,
|
||||
color: draw.Color,
|
||||
vertices: []draw.Vertex_2D,
|
||||
offset: int,
|
||||
) {
|
||||
vertices[offset + 0] = solid_vertex({x, y}, color)
|
||||
vertices[offset + 1] = solid_vertex({x + width, y}, color)
|
||||
vertices[offset + 2] = solid_vertex({x + width, y + height}, color)
|
||||
@@ -35,11 +43,12 @@ emit_rectangle :: proc(x, y, width, height: f32, color: draw.Color, vertices: []
|
||||
vertices[offset + 5] = solid_vertex({x, y + height}, color)
|
||||
}
|
||||
|
||||
//INTERNAL
|
||||
extrude_line :: proc(
|
||||
start, end_pos: draw.Vec2,
|
||||
thickness: f32,
|
||||
color: draw.Color,
|
||||
vertices: []draw.Vertex,
|
||||
vertices: []draw.Vertex_2D,
|
||||
offset: int,
|
||||
) -> int {
|
||||
direction := end_pos - start
|
||||
@@ -69,7 +78,7 @@ extrude_line :: proc(
|
||||
// ----- Public draw -----
|
||||
|
||||
pixel :: proc(layer: ^draw.Layer, pos: draw.Vec2, color: draw.Color) {
|
||||
vertices: [6]draw.Vertex
|
||||
vertices: [6]draw.Vertex_2D
|
||||
emit_rectangle(pos[0], pos[1], 1, 1, color, vertices[:], 0)
|
||||
draw.prepare_shape(layer, vertices[:])
|
||||
}
|
||||
@@ -82,7 +91,7 @@ triangle :: proc(
|
||||
rotation: f32 = 0,
|
||||
) {
|
||||
if !draw.needs_transform(origin, rotation) {
|
||||
vertices := [3]draw.Vertex{solid_vertex(v1, color), solid_vertex(v2, color), solid_vertex(v3, color)}
|
||||
vertices := [3]draw.Vertex_2D{solid_vertex(v1, color), solid_vertex(v2, color), solid_vertex(v3, color)}
|
||||
draw.prepare_shape(layer, vertices[:])
|
||||
return
|
||||
}
|
||||
@@ -91,7 +100,7 @@ triangle :: proc(
|
||||
local_v1 := v1 - bounds_min
|
||||
local_v2 := v2 - bounds_min
|
||||
local_v3 := v3 - bounds_min
|
||||
vertices := [3]draw.Vertex {
|
||||
vertices := [3]draw.Vertex_2D {
|
||||
solid_vertex(draw.apply_transform(transform, local_v1), color),
|
||||
solid_vertex(draw.apply_transform(transform, local_v2), color),
|
||||
solid_vertex(draw.apply_transform(transform, local_v3), color),
|
||||
@@ -170,7 +179,7 @@ triangle_aa :: proc(
|
||||
transparent := draw.BLANK
|
||||
|
||||
// 3 interior + 6 × 3 edge-quad = 21 vertices
|
||||
vertices: [21]draw.Vertex
|
||||
vertices: [21]draw.Vertex_2D
|
||||
|
||||
// Interior triangle
|
||||
vertices[0] = solid_vertex(p0, color)
|
||||
@@ -213,7 +222,7 @@ triangle_lines :: proc(
|
||||
rotation: f32 = 0,
|
||||
temp_allocator := context.temp_allocator,
|
||||
) {
|
||||
vertices := make([]draw.Vertex, 18, temp_allocator)
|
||||
vertices := make([]draw.Vertex_2D, 18, temp_allocator)
|
||||
defer delete(vertices, temp_allocator)
|
||||
write_offset := 0
|
||||
|
||||
@@ -249,7 +258,7 @@ triangle_fan :: proc(
|
||||
|
||||
triangle_count := len(points) - 2
|
||||
vertex_count := triangle_count * 3
|
||||
vertices := make([]draw.Vertex, vertex_count, temp_allocator)
|
||||
vertices := make([]draw.Vertex_2D, vertex_count, temp_allocator)
|
||||
defer delete(vertices, temp_allocator)
|
||||
|
||||
if !draw.needs_transform(origin, rotation) {
|
||||
@@ -289,7 +298,7 @@ triangle_strip :: proc(
|
||||
|
||||
triangle_count := len(points) - 2
|
||||
vertex_count := triangle_count * 3
|
||||
vertices := make([]draw.Vertex, vertex_count, temp_allocator)
|
||||
vertices := make([]draw.Vertex_2D, vertex_count, temp_allocator)
|
||||
defer delete(vertices, temp_allocator)
|
||||
|
||||
if !draw.needs_transform(origin, rotation) {
|
||||
|
||||
Reference in New Issue
Block a user