Gamma correction corrected....

This commit is contained in:
2025-08-05 22:58:21 +02:00
parent 17c3469602
commit 0736eb77b2
5 changed files with 61 additions and 9 deletions

View File

@@ -81,6 +81,7 @@ MAX_CHILDREN :: 16;
dynamic_friction: float; dynamic_friction: float;
restitution: float; restitution: float;
render_collider: bool;
collider_color: Color; collider_color: Color;
lock: Physics_Lock; lock: Physics_Lock;

View File

@@ -42,13 +42,6 @@ Vector3i :: struct {
z: int; z: int;
} }
Color :: #type,isa Vector4;
Colored_Vert :: struct {
position: Vector2;
color : Color;
}
AABB :: struct { AABB :: struct {
min: Vector3 = .{FLOAT32_INFINITY, FLOAT32_INFINITY, FLOAT32_INFINITY}; min: Vector3 = .{FLOAT32_INFINITY, FLOAT32_INFINITY, FLOAT32_INFINITY};
max: Vector3 = .{-FLOAT32_INFINITY, -FLOAT32_INFINITY, -FLOAT32_INFINITY}; max: Vector3 = .{-FLOAT32_INFINITY, -FLOAT32_INFINITY, -FLOAT32_INFINITY};
@@ -423,6 +416,60 @@ ease_in_out_sine :: (x: float) -> float {
return -(cos(PI * x) - 1.0) * 0.5; return -(cos(PI * x) - 1.0) * 0.5;
} }
// Color
Color :: #type,isa Vector4;
Colored_Vert :: struct {
position: Vector2;
color : Color;
}
linear_to_srgb :: (c: float) -> float {
if (c <= 0.0031308)
return 12.92 * c;
else
return 1.055 * pow(c, 1.0 / 2.4) - 0.055;
}
linear_to_srgb :: (c: Vector3) -> Vector3 {
return Vector3.{
linear_to_srgb(c.x),
linear_to_srgb(c.y),
linear_to_srgb(c.z)
};
}
linear_to_srgb :: (c: $T) -> T {
srgb_color := c;
srgb_color.x = linear_to_srgb(c.x);
srgb_color.y = linear_to_srgb(c.y);
srgb_color.z = linear_to_srgb(c.z);
return srgb_color;
}
srgb_to_linear :: (c: float) -> float {
if c <= 0.04045
return c / 12.92;
else
return pow((c + 0.055) / 1.055, 2.4);
}
srgb_to_linear :: (c: Vector3) -> Vector3 {
return float3(
srgbToLinear(c.r),
srgbToLinear(c.g),
srgbToLinear(c.b)
);
}
srgb_to_linear :: (c: $T) -> T {
linear_color := c;
linear_color.x = srgb_to_linear(c.x);
linear_color.y = srgb_to_linear(c.y);
linear_color.z = srgb_to_linear(c.z);
return linear_color;
}
#import "PCG"; #import "PCG";
#import "Math"; #import "Math";
#load "frustum.jai"; #load "frustum.jai";

View File

@@ -228,7 +228,9 @@ generate_member_ui_imgui :: (type: *Type_Info_Struct, builder: *String_Builder,
} else if info_struct.name == "Vector3" { } else if info_struct.name == "Vector3" {
print_to_builder(builder, "\tImGui.DragFloat3(tprint_c(\"%\"), *e.%.component);\n", new_path, new_path); print_to_builder(builder, "\tImGui.DragFloat3(tprint_c(\"%\"), *e.%.component);\n", new_path, new_path);
} else if info_struct.name == "Color" || info_struct.name == "Vector4" { } else if info_struct.name == "Color" || info_struct.name == "Vector4" {
print_to_builder(builder, "\tImGui.ColorEdit4(tprint_c(\"%\"), *e.%.component);\n", new_path, new_path); print_to_builder(builder, "\tsrgb_color := linear_to_srgb(e.%);\n", new_path);
print_to_builder(builder, "\tImGui.ColorEdit4(tprint_c(\"%\"), *srgb_color.component);\n", new_path);
print_to_builder(builder, "\te.% = srgb_to_linear(srgb_color);\n", new_path);
} else { } else {
generate_member_ui_imgui(info_struct, builder, new_path); generate_member_ui_imgui(info_struct, builder, new_path);
} }

View File

@@ -1115,7 +1115,7 @@ create_backend_render_target :: (using backend: *D3D11_Backend, width: u32, heig
texture_desc.Height = height; texture_desc.Height = height;
texture_desc.MipLevels = 1; texture_desc.MipLevels = 1;
texture_desc.ArraySize = 1; texture_desc.ArraySize = 1;
texture_desc.Format = .DXGI_FORMAT_R32G32B32A32_FLOAT; // @Incomplete texture_desc.Format = .DXGI_FORMAT_R16G16B16A16_FLOAT; // @Incomplete
texture_desc.SampleDesc.Count = 1; texture_desc.SampleDesc.Count = 1;
texture_desc.Usage = .D3D11_USAGE_DEFAULT; texture_desc.Usage = .D3D11_USAGE_DEFAULT;
texture_desc.BindFlags = D3D11_BIND_FLAG.RENDER_TARGET | D3D11_BIND_FLAG.SHADER_RESOURCE; texture_desc.BindFlags = D3D11_BIND_FLAG.RENDER_TARGET | D3D11_BIND_FLAG.SHADER_RESOURCE;

View File

@@ -64,6 +64,8 @@ render_trigger_lines :: () {
#if PHYSICS { #if PHYSICS {
for e: engine.current_scene.entities { for e: engine.current_scene.entities {
if e.physics.type == .BOX { if e.physics.type == .BOX {
if !e.physics.render_collider continue;
color := Color.{0,0,1,1};//e.collider.aabb_color; color := Color.{0,0,1,1};//e.collider.aabb_color;
aabb := AABB.{-e.physics.box.half_extent, e.physics.box.half_extent}; aabb := AABB.{-e.physics.box.half_extent, e.physics.box.half_extent};