1
1
ui_state : PlaneDistanceUI ,
2
2
allocator : std.mem.Allocator ,
3
- grid : * scenery.grid = undefined ,
3
+ grid : * scenery.Grid = undefined ,
4
+ plane : object.object = undefined ,
4
5
view_camera : * physics .camera .Camera (* PlaneDistance , physics .Integrator (physics .SmoothDeceleration )),
5
6
6
7
const PlaneDistance = @This ();
7
8
9
+ const grid_vertex_shader : []const u8 = @embedFile ("plane_vertex.glsl" );
10
+ const grid_frag_shader : []const u8 = @embedFile ("plane_frag.glsl" );
11
+
8
12
pub fn navType () ui.ui_state.scene_nav_info {
9
13
return .{
10
14
.nav_type = .math ,
@@ -21,9 +25,10 @@ pub fn init(allocator: std.mem.Allocator, cfg: *config) *PlaneDistance {
21
25
cfg ,
22
26
pd ,
23
27
integrator ,
28
+ .{ 0 , 0 , 0 },
24
29
);
25
30
errdefer cam .deinit (allocator );
26
- const grid = scenery .grid .init (allocator );
31
+ const grid = scenery .Grid .init (allocator );
27
32
errdefer grid .deinit ();
28
33
const ui_state : PlaneDistanceUI = .{};
29
34
@@ -34,7 +39,8 @@ pub fn init(allocator: std.mem.Allocator, cfg: *config) *PlaneDistance {
34
39
.grid = grid ,
35
40
};
36
41
grid .renderGrid ();
37
- cam .addProgram (grid .program (), scenery .grid .mvp_uniform_name );
42
+ pd .renderPlane ();
43
+ cam .addProgram (grid .program (), scenery .Grid .mvp_uniform_name );
38
44
return pd ;
39
45
}
40
46
@@ -48,11 +54,44 @@ pub fn deinit(self: *PlaneDistance, allocator: std.mem.Allocator) void {
48
54
pub fn draw (self : * PlaneDistance , dt : f64 ) void {
49
55
self .view_camera .update (dt );
50
56
self .grid .draw (dt );
57
+ const objects : [1 ]object.object = .{self .plane };
58
+ rhi .drawObjects (objects [0.. ]);
51
59
self .ui_state .draw ();
52
60
}
53
61
54
62
pub fn updateCamera (_ : * PlaneDistance ) void {}
55
63
64
+ pub fn renderPlane (self : * PlaneDistance ) void {
65
+ const prog = rhi .createProgram ();
66
+ rhi .attachShaders (prog , grid_vertex_shader , grid_frag_shader );
67
+ var i_datas : [1 ]rhi.instanceData = undefined ;
68
+ {
69
+ const m = math .matrix .identity ();
70
+ i_datas [0 ] = .{
71
+ .t_column0 = m .columns [0 ],
72
+ .t_column1 = m .columns [1 ],
73
+ .t_column2 = m .columns [2 ],
74
+ .t_column3 = m .columns [3 ],
75
+ .color = .{ 1 , 0 , 0 , 0.1 },
76
+ };
77
+ }
78
+ const plane : object.object = .{
79
+ .parallelepiped = object .Parallelepiped .init (
80
+ prog ,
81
+ i_datas [0.. ],
82
+ true ,
83
+ ),
84
+ };
85
+ {
86
+ var m = math .matrix .identity ();
87
+ m = math .matrix .transformMatrix (m , math .matrix .translate (-100 , 300 , -200 ));
88
+ m = math .matrix .transformMatrix (m , math .matrix .scale (200.0 , 0.01 , 400.0 ));
89
+ rhi .setUniformMatrix (prog , "f_plane_transform" , m );
90
+ }
91
+ self .view_camera .addProgram (prog , "f_mvp" );
92
+ self .plane = plane ;
93
+ }
94
+
56
95
const std = @import ("std" );
57
96
const c = @import ("../../c.zig" ).c ;
58
97
const ui = @import ("../../ui/ui.zig" );
0 commit comments