Polygon-mode, better shader-compile-error log, material variable 'casts_shadow'
This commit is contained in:
@@ -17,6 +17,8 @@ Renderer :: struct {
|
||||
vsync: bool,
|
||||
backend: rawptr,
|
||||
|
||||
polygon_mode: Polygon_Mode,
|
||||
|
||||
pipeline: Pipeline,
|
||||
|
||||
active_camera: ^Camera, // NOTE: SS - Hardcoded to 1 active camera. Split-screen is likely not possible due to this. Fix(?).
|
||||
@@ -26,6 +28,12 @@ Renderer :: struct {
|
||||
fullscreen_mesh: Mesh,
|
||||
}
|
||||
|
||||
Polygon_Mode :: enum {
|
||||
Fill,
|
||||
Line,
|
||||
Point,
|
||||
}
|
||||
|
||||
Viewport :: struct {
|
||||
x, y, width, height: u16,
|
||||
}
|
||||
@@ -155,6 +163,8 @@ render_frame :: proc(renderer: ^Renderer, texture_to_present: ^Texture, clear_co
|
||||
execute_pass(renderer, renderer.pipeline.passes[i], camera_view_matrix, camera_projection_matrix)
|
||||
}
|
||||
|
||||
apply_polygon_mode(renderer, .Fill)
|
||||
|
||||
if texture_to_present != nil { // Present.
|
||||
// Bind to the screen.
|
||||
bind_render_target(renderer, nil)
|
||||
@@ -192,7 +202,7 @@ render_frame :: proc(renderer: ^Renderer, texture_to_present: ^Texture, clear_co
|
||||
}
|
||||
}
|
||||
|
||||
execute_pass :: proc(renderer: ^Renderer, pass: ^Pass, view_matrix, projection_matrix: linalg.Matrix4x4f32) {
|
||||
execute_pass :: proc(renderer: ^Renderer, pass: ^Pass, view_matrix, projection_matrix: linalg.Matrix4x4f32) { // TODO: SS - Move to 'pass.odin'.
|
||||
// fmt.printfln("Executing pass '%v'.", pass.name)
|
||||
|
||||
assert(renderer != nil)
|
||||
@@ -200,6 +210,8 @@ execute_pass :: proc(renderer: ^Renderer, pass: ^Pass, view_matrix, projection_m
|
||||
|
||||
switch &t in &pass.type {
|
||||
case Scene_Pass: {
|
||||
apply_polygon_mode(renderer, renderer.polygon_mode)
|
||||
|
||||
assert(t.output_rt != nil)
|
||||
bind_render_target(renderer, t.output_rt)
|
||||
defer bind_render_target(renderer, nil)
|
||||
@@ -246,6 +258,7 @@ execute_pass :: proc(renderer: ^Renderer, pass: ^Pass, view_matrix, projection_m
|
||||
|
||||
// TODO: SS - "Deactivate" the pass?
|
||||
|
||||
apply_polygon_mode(renderer, .Fill)
|
||||
}
|
||||
case Post_Processing_Pass: {
|
||||
// Execute the post-processing nodes.
|
||||
@@ -477,4 +490,12 @@ distance_to_camera :: proc(camera: ^Camera, position: [3]f32) -> f32 {
|
||||
when RENDER_BACKEND_OPENGL {
|
||||
opengl_deactivate_fullscreen_material()
|
||||
}
|
||||
}
|
||||
|
||||
@(private) apply_polygon_mode :: proc(renderer: ^Renderer, mode: Polygon_Mode) {
|
||||
assert(renderer != nil)
|
||||
|
||||
when RENDER_BACKEND_OPENGL {
|
||||
opengl_apply_polygon_mode(renderer, mode)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user