Fixed for compiler version 0.2.012
This commit is contained in:
@@ -140,7 +140,7 @@ screen_to_world :: (camera: Camera, screen_position: Vector2, distance: float) -
|
|||||||
pos.z = 0.0;
|
pos.z = 0.0;
|
||||||
pos.w = 1.0;
|
pos.w = 1.0;
|
||||||
|
|
||||||
result := inverse(camera.projection_matrix * camera.view_matrix) * pos;
|
success :, result := inverse(camera.projection_matrix * camera.view_matrix) * pos;
|
||||||
result.x /= result.w;
|
result.x /= result.w;
|
||||||
result.y /= result.w;
|
result.y /= result.w;
|
||||||
result.z /= result.w;
|
result.z /= result.w;
|
||||||
@@ -178,7 +178,7 @@ normalized_screen_to_ray_v2 :: (camera: Camera, screen_position: Vector2) -> Ray
|
|||||||
far.z = 1.0;
|
far.z = 1.0;
|
||||||
far.w = 1.0;
|
far.w = 1.0;
|
||||||
|
|
||||||
inverse_view_proj := inverse(camera.projection_matrix * camera.view_matrix);
|
success :, inverse_view_proj := inverse(camera.projection_matrix * camera.view_matrix);
|
||||||
ray_origin := inverse_view_proj * origin;
|
ray_origin := inverse_view_proj * origin;
|
||||||
ray_end := inverse_view_proj * far;
|
ray_end := inverse_view_proj * far;
|
||||||
|
|
||||||
@@ -211,7 +211,7 @@ screen_to_ray_v2 :: (camera: Camera, screen_position: Vector2, screen_size: Vect
|
|||||||
far.z = 1.0;
|
far.z = 1.0;
|
||||||
far.w = 1.0;
|
far.w = 1.0;
|
||||||
|
|
||||||
inverse_view_proj := inverse(camera.projection_matrix * camera.view_matrix);
|
success :, inverse_view_proj := inverse(camera.projection_matrix * camera.view_matrix);
|
||||||
ray_origin := inverse_view_proj * origin;
|
ray_origin := inverse_view_proj * origin;
|
||||||
ray_end := inverse_view_proj * far;
|
ray_end := inverse_view_proj * far;
|
||||||
|
|
||||||
@@ -241,11 +241,12 @@ screen_to_ray :: (camera: *Camera, screen_position: Vector2, screen_size: Vector
|
|||||||
ray_clip.z = -1.0;
|
ray_clip.z = -1.0;
|
||||||
ray_clip.w = 1.0;
|
ray_clip.w = 1.0;
|
||||||
|
|
||||||
ray_eye := inverse(camera.projection_matrix) * ray_clip;
|
success :, ray_eye := inverse(camera.projection_matrix) * ray_clip;
|
||||||
ray_eye.z = 1.0;
|
ray_eye.z = 1.0;
|
||||||
ray_eye.w = 0.0;
|
ray_eye.w = 0.0;
|
||||||
|
|
||||||
ray_world := to_v3(inverse(camera.view_matrix) * ray_eye);
|
success2 :, inv_cam_matrix := inverse(camera.view_matrix);
|
||||||
|
ray_world := to_v3(inv_cam_matrix * ray_eye);
|
||||||
ray.direction = normalize(ray_world);
|
ray.direction = normalize(ray_world);
|
||||||
|
|
||||||
return ray;
|
return ray;
|
||||||
|
|||||||
@@ -94,14 +94,14 @@ update_sdl_input :: () {
|
|||||||
engine.input.exit = true;
|
engine.input.exit = true;
|
||||||
}
|
}
|
||||||
case SDL_KEYDOWN; {
|
case SDL_KEYDOWN; {
|
||||||
keycode, success := table_find(*key_mappings, event.key.keysym.sym);
|
success, keycode := table_find_new(*key_mappings, event.key.keysym.sym);
|
||||||
|
|
||||||
if success {
|
if success {
|
||||||
update_key_state(keycode, true);
|
update_key_state(keycode, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case SDL_KEYUP; {
|
case SDL_KEYUP; {
|
||||||
keycode, success := table_find(*key_mappings, event.key.keysym.sym);
|
success, keycode := table_find_new(*key_mappings, event.key.keysym.sym);
|
||||||
|
|
||||||
if success {
|
if success {
|
||||||
update_key_state(keycode, false);
|
update_key_state(keycode, false);
|
||||||
@@ -249,7 +249,7 @@ sdl_gamepad_button_update :: (using event : SDL_ControllerButtonEvent) {
|
|||||||
}
|
}
|
||||||
down := state == SDL_PRESSED;
|
down := state == SDL_PRESSED;
|
||||||
|
|
||||||
gamepad_button, success := table_find(*sdl_button_map, cast(SDL_GameControllerButton)button);
|
success, gamepad_button := table_find_new(*sdl_button_map, cast(SDL_GameControllerButton)button);
|
||||||
|
|
||||||
if success {
|
if success {
|
||||||
gamepad := *engine.input.gamepads[which];
|
gamepad := *engine.input.gamepads[which];
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ physics_step :: (scene: *Scene, timestep: float) {
|
|||||||
|
|
||||||
if other_e.flags & .COLLISION {
|
if other_e.flags & .COLLISION {
|
||||||
if other_e.collider.type == .AABB {
|
if other_e.collider.type == .AABB {
|
||||||
inv_matrix := inverse(other_e.transform.model_matrix);
|
success :, inv_matrix := inverse(other_e.transform.model_matrix);
|
||||||
aabb := other_e.collider.aabb;
|
aabb := other_e.collider.aabb;
|
||||||
if point_inside_aabb(aabb, transform_position(e.transform.position, inv_matrix)) {
|
if point_inside_aabb(aabb, transform_position(e.transform.position, inv_matrix)) {
|
||||||
add_trigger_overlap_if_new(other_e, e);
|
add_trigger_overlap_if_new(other_e, e);
|
||||||
|
|||||||
@@ -571,7 +571,7 @@ get_shader_info_from_blob :: (blob: *ID3DBlob, shader_type: Shader_Type) -> Shad
|
|||||||
return shader_info;
|
return shader_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
create_backend_shader_from_source :: (using renderer: *D3D11_Backend, name: string, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader #must, Shader_Info, bool {
|
create_backend_shader_from_source :: (using renderer: *D3D11_Backend, name: string, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader, Shader_Info, bool {
|
||||||
shader_model : string;
|
shader_model : string;
|
||||||
|
|
||||||
if shader_type == .VERTEX shader_model = "vs_4_0";
|
if shader_type == .VERTEX shader_model = "vs_4_0";
|
||||||
@@ -608,7 +608,7 @@ create_backend_shader_from_source :: (using renderer: *D3D11_Backend, name: stri
|
|||||||
return shader, shader_info, true;
|
return shader, shader_info, true;
|
||||||
}
|
}
|
||||||
|
|
||||||
create_backend_shader :: (using renderer: *D3D11_Backend, path: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader #must, Shader_Info, bool {
|
create_backend_shader :: (using renderer: *D3D11_Backend, path: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader, Shader_Info, bool {
|
||||||
content := read_entire_file(path);
|
content := read_entire_file(path);
|
||||||
if !content return .{}, .{}, false;
|
if !content return .{}, .{}, false;
|
||||||
defer free(content);
|
defer free(content);
|
||||||
@@ -618,7 +618,7 @@ create_backend_shader :: (using renderer: *D3D11_Backend, path: string, entry_po
|
|||||||
return shader, info, success;
|
return shader, info, success;
|
||||||
}
|
}
|
||||||
|
|
||||||
reload_backend_shader :: (using renderer: *D3D11_Backend, path: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader #must, bool {
|
reload_backend_shader :: (using renderer: *D3D11_Backend, path: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader, bool {
|
||||||
content := read_entire_file(path);
|
content := read_entire_file(path);
|
||||||
if !content return .{}, false;
|
if !content return .{}, false;
|
||||||
defer free(content);
|
defer free(content);
|
||||||
@@ -628,7 +628,7 @@ reload_backend_shader :: (using renderer: *D3D11_Backend, path: string, entry_po
|
|||||||
return shader, success;
|
return shader, success;
|
||||||
}
|
}
|
||||||
|
|
||||||
reload_backend_shader_from_source :: (using renderer: *D3D11_Backend, name: string, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader #must, bool {
|
reload_backend_shader_from_source :: (using renderer: *D3D11_Backend, name: string, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader, bool {
|
||||||
shader_model : string;
|
shader_model : string;
|
||||||
|
|
||||||
if shader_type == .VERTEX shader_model = "vs_4_0";
|
if shader_type == .VERTEX shader_model = "vs_4_0";
|
||||||
@@ -663,7 +663,7 @@ reload_backend_shader_from_source :: (using renderer: *D3D11_Backend, name: stri
|
|||||||
return shader, true;
|
return shader, true;
|
||||||
}
|
}
|
||||||
|
|
||||||
create_backend_blend_state :: (using renderer: *D3D11_Backend, type: Blend_Type) -> Backend_Blend_State #must, bool {
|
create_backend_blend_state :: (using renderer: *D3D11_Backend, type: Blend_Type) -> Backend_Blend_State, bool {
|
||||||
blend_state : Backend_Blend_State;
|
blend_state : Backend_Blend_State;
|
||||||
|
|
||||||
if type == {
|
if type == {
|
||||||
@@ -907,7 +907,7 @@ create_backend_input_layout2 :: (using renderer: *D3D11_Backend, layout: [] Vert
|
|||||||
return vertex_layout;
|
return vertex_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
create_backend_buffer :: (using renderer: *D3D11_Backend, data: *void, size: u32, stride: u32, type: Buffer_Type, mappable: bool) -> Backend_Buffer #must, bool {
|
create_backend_buffer :: (using renderer: *D3D11_Backend, data: *void, size: u32, stride: u32, type: Buffer_Type, mappable: bool) -> Backend_Buffer, bool {
|
||||||
bd : D3D11_BUFFER_DESC;
|
bd : D3D11_BUFFER_DESC;
|
||||||
|
|
||||||
flag : D3D11_BIND_FLAG;
|
flag : D3D11_BIND_FLAG;
|
||||||
@@ -981,7 +981,7 @@ destroy_backend_buffer :: (using backend: *D3D11_Backend, buffer: Backend_Buffer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
map_backend_buffer :: (using backend: *D3D11_Backend, buffer: Backend_Buffer) -> *void #must {
|
map_backend_buffer :: (using backend: *D3D11_Backend, buffer: Backend_Buffer) -> *void{
|
||||||
mapped_resource : D3D11_MAPPED_SUBRESOURCE;
|
mapped_resource : D3D11_MAPPED_SUBRESOURCE;
|
||||||
memset(*mapped_resource, 0, size_of(D3D11_MAPPED_SUBRESOURCE));
|
memset(*mapped_resource, 0, size_of(D3D11_MAPPED_SUBRESOURCE));
|
||||||
ID3D11DeviceContext_Map(d3d_context, buffer.buffer, 0, .D3D11_MAP_WRITE_DISCARD, 0, *mapped_resource);
|
ID3D11DeviceContext_Map(d3d_context, buffer.buffer, 0, .D3D11_MAP_WRITE_DISCARD, 0, *mapped_resource);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ calc_tight_light_projection :: (camera: Camera, light_direction: Vector3) -> Mat
|
|||||||
frustum := get_frustum(camera.fov, aspect_ratio, camera.z_near, camera.z_far);
|
frustum := get_frustum(camera.fov, aspect_ratio, camera.z_near, camera.z_far);
|
||||||
|
|
||||||
// View frustum back to world space
|
// View frustum back to world space
|
||||||
inv_camera_view := inverse(camera.view_matrix);
|
success :, inv_camera_view := inverse(camera.view_matrix);
|
||||||
view_frustum_in_world_space := transform(frustum, inv_camera_view);
|
view_frustum_in_world_space := transform(frustum, inv_camera_view);
|
||||||
|
|
||||||
light_view := look_at_lh(.{0,0,0}, light_direction, .{0,1,0});
|
light_view := look_at_lh(.{0,0,0}, light_direction, .{0,1,0});
|
||||||
@@ -15,7 +15,7 @@ calc_tight_light_projection :: (camera: Camera, light_direction: Vector3) -> Mat
|
|||||||
top_right := Vector3.{aabb.max.x, aabb.max.y, aabb.min.z};
|
top_right := Vector3.{aabb.max.x, aabb.max.y, aabb.min.z};
|
||||||
light_pos_world := (bottom_left + top_right) * 0.5;
|
light_pos_world := (bottom_left + top_right) * 0.5;
|
||||||
|
|
||||||
inverse_light_view := inverse(light_view);
|
succes, inverse_light_view := inverse(light_view);
|
||||||
light_pos_world = transform_position(light_pos_world, inverse_light_view);
|
light_pos_world = transform_position(light_pos_world, inverse_light_view);
|
||||||
|
|
||||||
light_view = look_at_lh(light_pos_world, light_pos_world + light_direction, .{0,1,0});
|
light_view = look_at_lh(light_pos_world, light_pos_world + light_direction, .{0,1,0});
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ get_mesh_vb :: (mesh: *Mesh, input: [] Mesh_Vertex_Data_Type) -> Buffer_Handle {
|
|||||||
table_add(*mesh.vbs, hash, vb);
|
table_add(*mesh.vbs, hash, vb);
|
||||||
}
|
}
|
||||||
|
|
||||||
value, success := table_find(*mesh.vbs, hash);
|
success, value := table_find_new(*mesh.vbs, hash);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1410,7 +1410,7 @@ push_cmd_set_depth_write :: (using renderer: *Renderer, enabled: bool) {
|
|||||||
array_add(*engine.renderer.command_buffer.commands, command);
|
array_add(*engine.renderer.command_buffer.commands, command);
|
||||||
}
|
}
|
||||||
|
|
||||||
map_buffer :: (using renderer: *Renderer, handle: Buffer_Handle) -> *void #must {
|
map_buffer :: (using renderer: *Renderer, handle: Buffer_Handle) -> *void{
|
||||||
assert(handle > 0);
|
assert(handle > 0);
|
||||||
|
|
||||||
buffer := parray_get(*buffers, handle);
|
buffer := parray_get(*buffers, handle);
|
||||||
|
|||||||
Reference in New Issue
Block a user