diff --git a/HydraClient/source/HydraGame.cpp b/HydraClient/source/HydraGame.cpp index 9f14f76..afecc9d 100644 --- a/HydraClient/source/HydraGame.cpp +++ b/HydraClient/source/HydraGame.cpp @@ -11,13 +11,14 @@ bool HydraGame::Initialise() m_sun_light_id = GetEngine()->ActorManager()->CreateActor(); GetEngine()->ActorManager()->InitialiseActor(m_sun_light_id); - GetEngine()->ActorManager()->SetOrientation(m_sun_light_id, -0.25f, 0.0f, 0.0f); - GetEngine()->ActorManager()->SetPosition(m_sun_light_id, glm::dvec3(0.0f, 5.0f, 10.0f)); + GetEngine()->ActorManager()->SetOrientation(m_sun_light_id, -0.5f, 0.0f, 0.0f); + // m_other_light_id = GetEngine()->ActorManager()->CreateActor(); // GetEngine()->ActorManager()->InitialiseActor(m_other_light_id); // GetEngine()->ActorManager()->SetOrientation(m_other_light_id, -0.5f, 0.0f, 0.0f); // GetEngine()->ActorManager()->SetPosition(m_other_light_id, glm::dvec3(5.0f, 4.0f, 5.0f)); + // m_other_light_id = GetEngine()->ActorManager()->CreateActor(); // GetEngine()->ActorManager()->InitialiseActor(m_other_light_id); // GetEngine()->ActorManager()->SetOrientation(m_other_light_id, 0.4f, 0.5f, 0.0f); @@ -25,6 +26,10 @@ bool HydraGame::Initialise() // //1.570796327f // //3.141592654f + m_cube_actor_id = GetEngine()->ActorManager()->CreateActor(); + GetEngine()->ActorManager()->InitialiseActor(m_cube_actor_id); + GetEngine()->ActorManager()->SetPosition(m_cube_actor_id, glm::dvec3(0, 1.0, 0)); + m_plane_actor_id = GetEngine()->ActorManager()->CreateActor(); GetEngine()->ActorManager()->InitialiseActor(m_plane_actor_id); GetEngine()->ActorManager()->SetPosition(m_plane_actor_id, glm::dvec3(0, 0, 0)); @@ -34,13 +39,17 @@ bool HydraGame::Initialise() // GetEngine()->ActorManager()->SetPosition(m_cube_actor_id, glm::dvec3(0, -2, 0)); // GetEngine()->ActorManager()->SetRelationship(m_plane_actor_id, m_cube_actor_id); - m_gltf_id = GetEngine()->ActorManager()->LoadActor("c:/Code/HydraV3/Media/AntiqueCamera.glb"); + m_gltf_id = GetEngine()->ActorManager()->LoadActor("c:/Code/HydraV3/Media/Tree1.glb"); GetEngine()->ActorManager()->InitialiseActor(m_gltf_id); GetEngine()->ActorManager()->SetPosition(m_gltf_id, glm::dvec3(0, 0, 0)); + m_gltf_id1 = GetEngine()->ActorManager()->LoadActor("c:/Code/HydraV3/Media/Tree1.glb"); + GetEngine()->ActorManager()->InitialiseActor(m_gltf_id); + GetEngine()->ActorManager()->SetPosition(m_gltf_id, glm::dvec3(0, 0, 500)); + m_player_actor_id = GetEngine()->ActorManager()->CreateActor(); GetEngine()->ActorManager()->InitialiseActor(m_player_actor_id); - GetEngine()->ActorManager()->SetPosition(m_player_actor_id, glm::dvec3(0, 4, 4)); + GetEngine()->ActorManager()->SetPosition(m_player_actor_id, glm::dvec3(0, 2, 2)); GetEngine()->PossessPlayer(m_player_actor_id); GetEngine()->Camera()->AttachToActor(m_player_actor_id); @@ -61,7 +70,7 @@ void HydraGame::Update(float delta_t_seconds) // } m_angle += m_diff; - //GetEngine()->ActorManager()->SetOrientation(m_sun_light_id, -0.2, m_angle, 0); + GetEngine()->ActorManager()->SetOrientation(m_sun_light_id, -0.5f, m_angle/2.0f, 0); // GetEngine()->ActorManager()->SetOrientation(m_gltf_id, 0, m_angle, 0); // GetEngine()->ActorManager()->SetOrientation(m_plane_actor_id, 0, m_angle, 0); } \ No newline at end of file diff --git a/HydraClient/source/HydraGame.h b/HydraClient/source/HydraGame.h index e180171..b36d3df 100644 --- a/HydraClient/source/HydraGame.h +++ b/HydraClient/source/HydraGame.h @@ -15,6 +15,7 @@ class HydraGame : public HydraGameProxy HydraID m_sun_light_id = INVALID_HYDRA_ID; HydraID m_other_light_id = INVALID_HYDRA_ID; HydraID m_gltf_id = INVALID_HYDRA_ID; + HydraID m_gltf_id1 = INVALID_HYDRA_ID; float m_time = 0; float m_angle = 0; float m_diff = 0.005; diff --git a/HydraEngine/includes/Hydra.h b/HydraEngine/includes/Hydra.h index 34135c4..ae68e4e 100644 --- a/HydraEngine/includes/Hydra.h +++ b/HydraEngine/includes/Hydra.h @@ -10,6 +10,8 @@ #include "../source/actor/HydraDirectionalLightActor.h" #include "../source/actor/HydraPointLightActor.h" #include "../source/actor/HydraSpotLightActor.h" +#include "../source/actor/HydraTestCubeActor.h" + #include "../source/camera/HydraCamera.h" #include diff --git a/HydraEngine/source/HydraDefines.h b/HydraEngine/source/HydraDefines.h index 62b312f..2d14b0d 100644 --- a/HydraEngine/source/HydraDefines.h +++ b/HydraEngine/source/HydraDefines.h @@ -42,7 +42,7 @@ const uint32_t MAX_TEXTURES = 1000; const uint32_t MAX_ACTORS = 10000; const uint32_t MAX_LIGHTS = 500; const uint32_t MAX_SHADOWS = 10; -const uint32_t SHADOW_MAP_SIZE = 1024; +const uint32_t SHADOW_MAP_SIZE = 4096; enum class HYDRA_RENDERABLE_TYPE @@ -51,7 +51,8 @@ enum class HYDRA_RENDERABLE_TYPE HYDRA_SHADOW, HYDRA_TRANSPARENT, HYDRA_LIGHTING, - HYDRA_OUTPUT + HYDRA_OUTPUT, + HYDRA_TEXTURE_DEBUG }; enum class HYDRA_BUFFER_TYPE diff --git a/HydraEngine/source/ShaderFiles/deferred_output_shader.frag b/HydraEngine/source/ShaderFiles/deferred_output_shader.frag index cd6897d..8ef9056 100644 --- a/HydraEngine/source/ShaderFiles/deferred_output_shader.frag +++ b/HydraEngine/source/ShaderFiles/deferred_output_shader.frag @@ -16,8 +16,8 @@ uint HYDRA_LIGHT_DIRECTIONAL = 1; uint HYDRA_LIGHT_POINT = 2; uint HYDRA_LIGHT_SPOT = 3; -struct light_structure -{ +struct LightStructure +{ vec4 ambient; vec4 diffuse; vec4 specular; @@ -29,36 +29,59 @@ struct light_structure float cutoff_outer; uint entity_id; uint light_type; + uint shadow_map_id; + uint shadow_caster; + uint padding0; + uint padding1; }; +struct ShadowMapSet +{ + uint entity_id; + uint cascade_count; + uint shadow_texture_id; + uint frame_buffer_id; + float near_plane[8]; + float far_plane[8]; + mat4 light_space_proj[6]; + mat4 light_space_view[6]; +}; + + layout(binding = 0) uniform uniform_per_frame -{ +{ mat4 view; mat4 proj; - vec3 viewer_pos; + vec3 viewer_pos; uint light_count; } ubo_per_frame; layout(binding = 1) uniform uniform_output_textures -{ +{ uint texture_ids[16]; }; -layout(std430, binding = 1) readonly buffer PositionsBuffer +layout(std430, binding = 1) readonly buffer positions_buffer { mat4 model_matrix[]; }; -layout( std430, binding = 3) readonly buffer TextureBuffer { +layout( std430, binding = 3) readonly buffer texture_buffer { uvec2 textures[1000]; }; -layout (std430, binding = 4) readonly buffer LightBuffer +layout (std430, binding = 4) readonly buffer light_buffer { - light_structure lights[500]; + LightStructure lights[500]; }; +layout (std430, binding = 5) readonly buffer shadow_map_sets +{ + ShadowMapSet shadows[10]; +}; + + layout (location=0) in VS_OUT { vec2 vsUV; @@ -116,38 +139,38 @@ vec3 CalculatePBR(vec3 normal, vec3 view_pos, vec3 world_pos,vec3 light_dir, vec vec3 N = normalize(normal); vec3 V = normalize(view_pos - world_pos); - // calculate reflectance at normal incidence; if dia-electric (like plastic) use F0 - // of 0.04 and if it's a metal, use the albedo color as F0 (metallic workflow) - vec3 F0 = vec3(0.04); + // calculate reflectance at normal incidence; if dia-electric (like plastic) use F0 + // of 0.04 and if it's a metal, use the albedo color as F0 (metallic workflow) + vec3 F0 = vec3(0.04); F0 = mix(F0, diffuse, metallic); - + // calculate per-light radiance vec3 L = normalize(light_dir); vec3 H = normalize(V + L); // Cook-Torrance BRDF - float NDF = DistributionGGX(N, H, roughness); - float G = GeometrySmith(N, V, L, roughness); + float NDF = DistributionGGX(N, H, roughness); + float G = GeometrySmith(N, V, L, roughness); vec3 F = fresnelSchlick(clamp(dot(H, V), 0.0, 1.0), F0); - - vec3 numerator = NDF * G * F; + + vec3 numerator = NDF * G * F; float denominator = 4.0 * max(dot(N, V), 0.0) * max(dot(N, L), 0.0) + 0.0001; // + 0.0001 to prevent divide by zero vec3 specular = numerator / denominator; - + // kS is equal to Fresnel vec3 kS = F; // for energy conservation, the diffuse and specular light can't // be above 1.0 (unless the surface emits light); to preserve this // relationship the diffuse component (kD) should equal 1.0 - kS. vec3 kD = vec3(1.0) - kS; - // multiply kD by the inverse metalness such that only non-metals + // multiply kD by the inverse metalness such that only non-metals // have diffuse lighting, or a linear blend if partly metal (pure metals // have no diffuse light). - kD *= 1.0 - metallic; + kD *= 1.0 - metallic; // scale light by NdotL - float NdotL = max(dot(N, L), 0.0); + float NdotL = max(dot(N, L), 0.0); // add to outgoing radiance Lo vec3 Lo = (kD * diffuse / PI + specular) * radiance * NdotL; // note that we already multiplied the BRDF by the Fresnel (kS) so we won't multiply by kS again @@ -155,88 +178,82 @@ vec3 CalculatePBR(vec3 normal, vec3 view_pos, vec3 world_pos,vec3 light_dir, vec return Lo; } -vec3 DirectionalShading(vec3 normal, - vec3 diffuse, - float roughness, - float metallic, - float light_intensity, - vec3 light_dir, - vec3 light_pos, - vec3 world_pos, +vec3 DirectionalShading(vec3 normal, + vec3 diffuse, + float roughness, + float metallic, + float light_intensity, + vec3 light_dir, + vec3 light_pos, + vec3 world_pos, vec3 view_pos) { - float distance = length(light_pos - world_pos); + float distance = length(light_pos - world_pos); float attenuation = 1.0; - + vec3 radiance = diffuse * attenuation; vec3 Lo = CalculatePBR(normal, view_pos, world_pos, light_dir, diffuse, radiance, roughness, metallic); return Lo; } - -vec3 PointShading(vec3 normal, - vec3 diffuse, - float roughness, - float metallic, - float light_intensity, + +vec3 PointShading(vec3 normal, + vec3 diffuse, + float roughness, + float metallic, + float light_intensity, vec3 light_pos, float light_constant, float light_linear, - float light_quadratic, - vec3 world_pos, + float light_quadratic, + vec3 world_pos, vec3 view_pos) { - - - float distance = length(light_pos - world_pos); + float distance = length(light_pos - world_pos); float attenuation = 1.0; - - attenuation = light_intensity / (light_constant + (light_linear * distance) + (light_quadratic * distance * distance)); + + attenuation = light_intensity / (light_constant + (light_linear * distance) + (light_quadratic * distance * distance)); vec3 radiance = diffuse * attenuation; vec3 light_dir = normalize(light_pos - world_pos); vec3 Lo = CalculatePBR(normal, view_pos, world_pos, light_dir, diffuse, radiance, roughness, metallic); return Lo; } -vec3 SpotShading(vec3 normal, - vec3 diffuse, - float roughness, - float metallic, - float light_intensity, - vec3 light_dir, +vec3 SpotShading(vec3 normal, + vec3 diffuse, + float roughness, + float metallic, + float light_intensity, + vec3 light_dir, vec3 light_pos, float cutoff, - float cutoff_outer, + float cutoff_outer, float light_constant, float light_linear, - float light_quadratic, - vec3 world_pos, + float light_quadratic, + vec3 world_pos, vec3 view_pos) { vec3 direction_to_light = normalize(light_pos - world_pos); float theta = dot(direction_to_light, light_dir); float falloff = 0.0f; - - - - // if(theta > cutoff) // { float epsilon = cutoff - cutoff_outer; - falloff = clamp((theta - cutoff_outer) / epsilon, 0.0, 1.0); - + falloff = clamp((theta - cutoff_outer) / epsilon, 0.0, 1.0); + //} - float distance = length(light_pos - world_pos); + float distance = length(light_pos - world_pos); float attenuation = 1.0; - - attenuation = light_intensity / (light_constant + (light_linear * distance) + (light_quadratic * distance * distance)); + + attenuation = light_intensity / (light_constant + (light_linear * distance) + (light_quadratic * distance * distance)); vec3 radiance = diffuse * attenuation * falloff; - + vec3 Lo = CalculatePBR(normal, view_pos, world_pos, direction_to_light, diffuse, radiance, roughness, metallic); return Lo; @@ -251,6 +268,101 @@ mat3 GetRotationOnlyMatrix(mat4 model_mat) return rot_mat; } +float SimpleSampleShadow(vec4 frag_clip_space, sampler2DArray sampler_shadow_map, uint shadow_trans_idx) +{ + vec3 frag_light_space = frag_clip_space.xyz / frag_clip_space.w; + frag_light_space = (frag_light_space * 0.5) + 0.5; + + float shadow_map_depth = texture(sampler_shadow_map, vec3(frag_light_space.xy, shadow_trans_idx)).r; + // return frag_light_space.z - shadow_map_depth; + // return shadow_map_depth ; + if(frag_light_space.z > shadow_map_depth) + { + return 0; + } + return 1; +} + +float SampleShadow(vec4 frag_clip_space, sampler2DArray sampler_shadow_map, uint shadow_trans_idx, vec3 normal, vec3 light_dir) +{ + vec3 frag_light_space = frag_clip_space.xyz / frag_clip_space.w; + frag_light_space = (frag_light_space * 0.5) + 0.5; + + float shadow_map_depth = texture(sampler_shadow_map, vec3(frag_light_space.xy, shadow_trans_idx)).r; + // calculate bias (based on depth map resolution and slope) + + + float bias = max(0.005 * (1.0 - dot(normal, light_dir)), 0.0001); + + + // check whether current frag pos is in shadow + // float shadow = currentDepth - bias > closestDepth ? 1.0 : 0.0; + // PCF + float shadow = 0.0; + vec2 texel_size = 1.0 / textureSize(sampler_shadow_map, 0).xy; + + for(int x = -1; x <= 1; ++x) + { + for(int y = -1; y <= 1; ++y) + { + shadow_map_depth = texture(sampler_shadow_map, vec3(frag_light_space.xy + vec2(x, y) * texel_size, shadow_trans_idx)).r; + shadow += frag_light_space.z - bias > shadow_map_depth ? 1.0 : 0.0; + } + } + shadow /= 9.0; + + // keep the shadow at 0.0 when outside the far_plane region of the light's frustum. + if(frag_light_space.z > 1.0) + shadow = 0.0; + + return shadow; +} + +float CalculateDirectionalShadow(vec4 world_pos, uint shadow_idx, vec3 normal, vec3 light_dir) +{ + float shadow = 0; + //Move the fragment to light space + vec4 frag_in_light_space = shadows[shadow_idx].light_space_view[5] * world_pos; + //measure the distance of the fragment from the light + float frag_distance = length(frag_in_light_space.xyz); + + uint shadow_trans_idx = 0; + uint ignore_shadow = 0; + + shadow_idx = 0; + //Work out which shadowmap is appropriate for this distance + for(uint i = 0; i < 6; i++) + { + if(frag_distance <= shadows[shadow_idx].far_plane[i]) + { + //record the shadow map level + shadow_trans_idx = i; + //and indicate that this has a level + ignore_shadow = 1; + break; + } + } + + + if(ignore_shadow == 1) + { + + vec4 translated_pixel = shadows[shadow_idx].light_space_proj[shadow_trans_idx] * + shadows[shadow_idx].light_space_view[shadow_trans_idx] * + world_pos; + + + uvec2 shadow_handle = textures[shadows[shadow_idx].shadow_texture_id]; + + + shadow = SampleShadow(translated_pixel, sampler2DArray(shadow_handle), shadow_trans_idx, normal, light_dir ); + + } + + return shadow; +} + + void main() { uvec2 diffuse_handle = textures[texture_ids[DIFFUSE_TEXTURE_ID]]; @@ -258,86 +370,88 @@ void main() uvec2 metal_rough_handle = textures[texture_ids[METAL_ROUGH_TEXTURE_ID]]; uvec2 world_pos_handle = textures[texture_ids[POSITION_TEXTIURE_ID]]; vec4 diffuse = texture(sampler2D(diffuse_handle), vs_out.vsUV.xy); - + if(diffuse[3] <= 0.1) - { + { discard; } vec3 normal = texture(sampler2D(normal_handle), vs_out.vsUV.xy).xyz; - vec3 metal_rough = texture(sampler2D(metal_rough_handle), vs_out.vsUV.xy).xyz; - vec3 world_pos = texture(sampler2D(world_pos_handle), vs_out.vsUV.xy).xyz; + vec3 metal_rough = texture(sampler2D(metal_rough_handle), vs_out.vsUV.xy).xyz; + vec3 world_pos = texture(sampler2D(world_pos_handle), vs_out.vsUV.xy).xyz; float rough = metal_rough[1]; float metal = metal_rough[2]; - - vec3 Lo = vec3(0,0,0); + float ao = 1; + vec3 ambient = vec3(0.05) * diffuse.xyz * ao; + vec3 Lo = ambient; for(int i = 0; i < ubo_per_frame.light_count; i ++) { mat4 model = model_matrix[lights[i].entity_id]; mat3 rot_mat = GetRotationOnlyMatrix(model); vec3 light_direction = normalize(rot_mat * vec3(0,0,1)); - + vec3 light_pos = model[3].xyz; if(lights[i].light_type == HYDRA_LIGHT_DIRECTIONAL) { Lo += DirectionalShading(normal, diffuse.xyz, rough, metal, lights[i].intensity, light_direction, light_pos, world_pos, ubo_per_frame.viewer_pos); + if(lights[i].shadow_caster == 1) + { + float shadow = CalculateDirectionalShadow(vec4(world_pos, 1.0), lights[i].shadow_map_id, normal, light_direction); + Lo = Lo * vec3(1-shadow); + } } else if(lights[i].light_type == HYDRA_LIGHT_POINT) { - Lo += PointShading(normal, - diffuse.xyz, - rough, - metal, - lights[i].intensity, - light_pos, + Lo += PointShading(normal, + diffuse.xyz, + rough, + metal, + lights[i].intensity, + light_pos, lights[i].constant, - lights[i].linear, - lights[i].quadratic, - world_pos, + lights[i].linear, + lights[i].quadratic, + world_pos, ubo_per_frame.viewer_pos); } else if(lights[i].light_type == HYDRA_LIGHT_SPOT) { - Lo += SpotShading(normal, - diffuse.xyz, - rough, - metal, - lights[i].intensity, + Lo += SpotShading(normal, + diffuse.xyz, + rough, + metal, + lights[i].intensity, light_direction, - light_pos, + light_pos, lights[i].cutoff, lights[i].cutoff_outer, lights[i].constant, - lights[i].linear, - lights[i].quadratic, - world_pos, + lights[i].linear, + lights[i].quadratic, + world_pos, ubo_per_frame.viewer_pos); } - + } - + float lighting = 0; - - - - // ambient lighting (note that the next IBL tutorial will replace + // ambient lighting (note that the next IBL tutorial will replace // this ambient lighting with environment lighting). - float ao = 1; - vec3 ambient = vec3(0.05) * diffuse.xyz * ao; + - vec3 output_color = Lo + ambient; + vec3 output_color = Lo; // HDR tonemapping output_color = output_color / (output_color + vec3(1.0)); // gamma correct - output_color = pow(output_color, vec3(1.0/2.1)); + output_color = pow(output_color, vec3(1.0/2.1)); uFragColor = vec4(output_color, 1.0); // float light = dot(lights[0].light_direction, normal); // uFragColor = vec4(diffuse.xyz * light,1); - + // uFragColor = vec4(normal, 1); } diff --git a/HydraEngine/source/ShaderFiles/deferred_output_shader.vert b/HydraEngine/source/ShaderFiles/deferred_output_shader.vert index 7905952..502f4ef 100644 --- a/HydraEngine/source/ShaderFiles/deferred_output_shader.vert +++ b/HydraEngine/source/ShaderFiles/deferred_output_shader.vert @@ -9,7 +9,7 @@ layout(binding = 0) uniform uniform_per_frame uint light_count; } ubo_per_frame; -layout(std430, binding = 1) readonly buffer PositionsBuffer +layout(std430, binding = 1) readonly buffer positions_buffer { mat4 model_matrix[]; }; diff --git a/HydraEngine/source/ShaderFiles/deferred_shader.frag b/HydraEngine/source/ShaderFiles/deferred_shader.frag index 95a6ca3..1194fe9 100644 --- a/HydraEngine/source/ShaderFiles/deferred_shader.frag +++ b/HydraEngine/source/ShaderFiles/deferred_shader.frag @@ -16,12 +16,12 @@ struct MaterialStore uint padding[1]; }; -layout(binding = 2, std430) readonly buffer MaterialBuffer +layout(binding = 2, std430) readonly buffer material_buffer { MaterialStore materials[1000]; }; -layout( std430, binding = 3) readonly buffer TextureBuffer { +layout( std430, binding = 3) readonly buffer texture_buffer { uvec2 textures[1000]; }; diff --git a/HydraEngine/source/ShaderFiles/deferred_shader.vert b/HydraEngine/source/ShaderFiles/deferred_shader.vert index 8b26f51..3ec42fa 100644 --- a/HydraEngine/source/ShaderFiles/deferred_shader.vert +++ b/HydraEngine/source/ShaderFiles/deferred_shader.vert @@ -9,7 +9,7 @@ layout(binding = 0) uniform uniform_per_frame uint light_count; } ubo_per_frame; -layout(std430, binding = 1) readonly buffer PositionsBuffer +layout(std430, binding = 1) readonly buffer positions_buffer { mat4 model_matrix[]; }; diff --git a/HydraEngine/source/ShaderFiles/forward_shader.frag b/HydraEngine/source/ShaderFiles/forward_shader.frag index b25968c..cb67c13 100644 --- a/HydraEngine/source/ShaderFiles/forward_shader.frag +++ b/HydraEngine/source/ShaderFiles/forward_shader.frag @@ -26,7 +26,6 @@ layout (location=0) in VS_OUT { vec2 vsUV; vec4 vsWorldPos; - vec4 normal; flat uint vsChunkID; flat uint vsMaterialID; }vs_out; diff --git a/HydraEngine/source/ShaderFiles/shadow_shader.frag b/HydraEngine/source/ShaderFiles/shadow_shader.frag index 30414d0..f8a4d91 100644 --- a/HydraEngine/source/ShaderFiles/shadow_shader.frag +++ b/HydraEngine/source/ShaderFiles/shadow_shader.frag @@ -1,15 +1,62 @@ //*PIXEL* -#version 450 +#version 460 -#extension GL_EXT_scalar_block_layout : enable -#extension GL_EXT_nonuniform_qualifier : enable +#extension GL_ARB_bindless_texture : require const uint DIRECTIONAL_LIGHT = 1; const uint POINT_LIGHT = 2; const uint SPOT_LIGHT = 3; +uint INVALID_HYDRA_ID = 4294967295; + +struct MaterialStore +{ + vec4 diffuse_colour; + vec4 matalic_rough; + uint diffuse_texture_id; + uint metallic_rough_texture_id; + uint normal_texture_id; + uint padding[1]; +}; + +layout(std430, binding = 2) readonly buffer material_buffer +{ + MaterialStore materials[1000]; +}; + +layout(std430, binding = 3) readonly buffer texture_buffer +{ + uvec2 textures[1000]; +}; + +layout (location=0) in GEOM_OUT +{ + vec2 vsUV; + flat uint vsMaterialID; +}geom_out; + +layout (location=0) out vec4 output_colour; void main() { - - //gl_FragDepth = gl_FragCoord.z; + MaterialStore mat = materials[geom_out.vsMaterialID]; + vec4 diffuse_val = mat.diffuse_colour; + + output_colour = vec4(1,0,0,1); + + // if(mat.diffuse_texture_id != INVALID_HYDRA_ID) + // { + // output_colour = vec4(0,1,0,1); + // uvec2 diffuse_handle = textures[mat.diffuse_texture_id]; + // diffuse_val = diffuse_val * texture(sampler2D(diffuse_handle), geom_out.vsUV.xy); + // output_colour = diffuse_val; + // } + + // if(diffuse_val[3] <= 0.4) + // { + // discard; + // } + // Calculate the accurate, unclamped distance from the light source + // output_colour = diffuse_val; + // output_colour = vec4(geom_out.vsUV, 1,1); + } diff --git a/HydraEngine/source/ShaderFiles/shadow_shader.geom b/HydraEngine/source/ShaderFiles/shadow_shader.geom index ddd5b0f..d5ea3ad 100644 --- a/HydraEngine/source/ShaderFiles/shadow_shader.geom +++ b/HydraEngine/source/ShaderFiles/shadow_shader.geom @@ -22,20 +22,40 @@ layout(binding = 0) uniform shadow_per_frame uint shadow_idxs; }; -layout(std430, binding = 5) readonly buffer ShadowMapSets +layout(std430, binding = 5) readonly buffer shadow_map_sets { ShadowMapSet shadows[10]; }; + +layout (location=0) in VS_OUT +{ + vec2 vsUV; + flat uint vsMaterialID; +}vs_in[]; + +layout (location=0) out GEOM_OUT +{ + vec2 vsUV; + flat uint vsMaterialID; +}geom_out; + void main() -{ +{ + mat4 view = shadows[shadow_idxs].light_space_view[gl_InvocationID]; + mat4 proj = shadows[shadow_idxs].light_space_proj[gl_InvocationID]; + for (int i = 0; i < 3; ++i) { - gl_Position = shadows[shadow_idxs].light_space_proj[gl_InvocationID] * - shadows[shadow_idxs].light_space_view[gl_InvocationID] * - gl_in[i].gl_Position; gl_Layer = gl_InvocationID; - EmitVertex(); + vec4 clip_space_pos = proj * view * gl_in[i].gl_Position; + + gl_Position = clip_space_pos; + + geom_out.vsMaterialID = vs_in[gl_InvocationID].vsMaterialID; + geom_out.vsUV = vs_in[gl_InvocationID].vsUV; + + EmitVertex(); } EndPrimitive(); } \ No newline at end of file diff --git a/HydraEngine/source/ShaderFiles/shadow_shader.vert b/HydraEngine/source/ShaderFiles/shadow_shader.vert index 5eeda68..4e647ae 100644 --- a/HydraEngine/source/ShaderFiles/shadow_shader.vert +++ b/HydraEngine/source/ShaderFiles/shadow_shader.vert @@ -1,8 +1,8 @@ //*VERTEX* -#version 450 -#extension GL_EXT_buffer_reference : enable +#version 460 -layout(binding = 1) readonly buffer PositionsBuffer + +layout(binding = 1) readonly buffer positions_buffer { mat4 model_matrix[]; }; @@ -14,10 +14,19 @@ layout (location = 3) in vec3 inNormal; //8 Bytes : 12 layout (location = 4) in vec3 inBiTangent; layout (location = 5) in vec3 inTangent; +layout (location=0) out VS_OUT +{ + vec2 vsUV; + flat uint vsMaterialID; +}vs_out; + + + void main() -{ - +{ uint chunkid = inChunkID[0]; mat4 model = model_matrix[chunkid]; gl_Position = model * vec4(inPos, 1.0); + vs_out.vsUV = inUV; + vs_out.vsMaterialID = inChunkID[1]; } \ No newline at end of file diff --git a/HydraEngine/source/ShaderFiles/texture_debug_shader.frag b/HydraEngine/source/ShaderFiles/texture_debug_shader.frag new file mode 100644 index 0000000..22483be --- /dev/null +++ b/HydraEngine/source/ShaderFiles/texture_debug_shader.frag @@ -0,0 +1,39 @@ +//*PIXEL* +#version 450 + +#extension GL_EXT_scalar_block_layout : enable +#extension GL_EXT_nonuniform_qualifier : enable +#extension GL_ARB_bindless_texture : enable + +const uint DIRECTIONAL_LIGHT = 1; +const uint POINT_LIGHT = 2; +const uint SPOT_LIGHT = 3; + +layout( std430, binding = 3) readonly buffer texture_buffer { + uvec2 textures[1000]; +}; + +layout(binding = 0) uniform uniform_per_frame +{ + mat4 view; + mat4 proj; + uint shadow_texture_id; + vec3 padding0; +}; + +layout (location=0) in VS_OUT +{ + vec2 vsUV; +}; + + +layout (location=0) out vec4 output_colour; + +void main() +{ + uvec2 shadow_handle = textures[shadow_texture_id]; + float colour = texture(sampler2DArray(shadow_handle), vec3(vsUV, 0)).r; + //colour = (1.0 - (1.0 - colour) * 1.4); + output_colour = vec4(colour, colour, colour, 1.0); + //output_colour = vec4(1,0,0,1); +} diff --git a/HydraEngine/source/ShaderFiles/texture_debug_shader.vert b/HydraEngine/source/ShaderFiles/texture_debug_shader.vert new file mode 100644 index 0000000..3005a85 --- /dev/null +++ b/HydraEngine/source/ShaderFiles/texture_debug_shader.vert @@ -0,0 +1,37 @@ +//*VERTEX* +#version 450 +#extension GL_EXT_buffer_reference : enable + +layout(binding = 1) readonly buffer positions_buffer +{ + mat4 model_matrix[]; +}; + +layout(binding = 0) uniform uniform_per_frame +{ + mat4 view; + mat4 proj; + uint shadow_texture_id; + vec3 padding0; +}; + + +layout (location = 0) in vec3 inPos; //12 bytes : 0 +layout (location = 1) in vec2 inUV; //8 Bytes : 12 +layout (location = 2) in uvec3 inChunkID; //12 Bytes : 20 +layout (location = 3) in vec3 inNormal; //8 Bytes : 12 +layout (location = 4) in vec3 inBiTangent; +layout (location = 5) in vec3 inTangent; + +layout (location=0) out VS_OUT +{ + vec2 vsUV; +}; + +void main() +{ + uint chunkid = inChunkID[0]; + mat4 model = model_matrix[chunkid]; + gl_Position = proj * view * vec4(inPos, 1.0); + vsUV = inUV; +} \ No newline at end of file diff --git a/HydraEngine/source/actor/HydraDirectionalLightActor.cpp b/HydraEngine/source/actor/HydraDirectionalLightActor.cpp index bd091ac..6727cac 100644 --- a/HydraEngine/source/actor/HydraDirectionalLightActor.cpp +++ b/HydraEngine/source/actor/HydraDirectionalLightActor.cpp @@ -23,7 +23,7 @@ void HydraDirectionalLightActor::InitialiseComponents() light_comp.diffuse = glm::vec4(1,1,1,1); - light_comp.intensity = 1000.0f; + light_comp.intensity = 10000.0f; light_comp.light_type = static_cast(HYDRA_LIGHT_TYPE::HYDRA_LIGHT_DIRECTIONAL); light_comp.entity_id = GetID(); diff --git a/HydraEngine/source/actor/HydraTestCubeActor.cpp b/HydraEngine/source/actor/HydraTestCubeActor.cpp new file mode 100644 index 0000000..4fdbb08 --- /dev/null +++ b/HydraEngine/source/actor/HydraTestCubeActor.cpp @@ -0,0 +1,208 @@ +#include "HydraTestCubeActor.h" +#include "../engine/HydraEngine.h" +#include "../actor/HydraActorManager.h" +#include "../task/HydraTask.h" +#include "../ecs/HydraECS.h" +#include "../ecs/components/HydraPositionComponent.h" +#include "../ecs/components/HydraMeshComponent.h" +#include "../ecs/components/HydraRenderableComponent.h" +#include "../ecs/components/HydraMaterialComponent.h" +#include "../buffer/HydraMaterialBufferManager.h" +#include "../buffer/HydraTextureBufferManager.h" +#include "../buffer/HydraMaterialBuffer.h" +#include "../mesh/HydraMeshManager.h" +#include "../mesh/HydraMesh.h" + +void HydraTestCubeActor::InitialiseComponents() +{ + // HydraECS* ecs = GetEngine()->ECS(); + // HydraID entity_id = ecs->CreateEntity(); + _CreatePosition(); + // _CreatePhysics(); + + _CreateMaterial(); + _CreateMesh(); + _CreateRenderableComponent(); +} + +void HydraTestCubeActor::DeferredInitialiseComponents() +{ +} + +void HydraTestCubeActor::_CreatePosition() +{ + HydraECS *ecs = GetEngine()->ECS(); + HydraPositionComponent position_component; + ecs->AddComponent(GetID(), position_component); +} + +void HydraTestCubeActor::_CreateMesh() +{ + HydraMeshManager *mesh_manager = GetEngine()->MeshManager(); + HydraID mesh_id = mesh_manager->CreateMesh(); + HydraMesh *mesh = mesh_manager->GetMesh(mesh_id); + + HydraMaterialComponent mat_comp = GetEngine()->ECS()->GetComponent(GetID()); + + mesh->vertexes.resize(24); + mesh->indexes.resize(36); + + float scale_x = 1.0f; + float scale_y = 1.0f; + float scale_z = 1.0f; + + float min_x = -0.5f * scale_x; + float min_y = -0.5f * scale_y; + float min_z = -0.5f * scale_z; + + float max_x = 0.5f * scale_x; + float max_y = 0.5f * scale_y; + float max_z = 0.5f * scale_z; + + float min_u = 1; + float min_v = 1; + + float max_u = 0; + float max_v = 0; + + // 1---2 5---6 + //| / | | / | + // 0---3 4---7 + + HydraID actor_id = GetID(); + mesh->vertexes[0] = {min_x, min_y, min_z, min_u, min_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[1] = {min_x, max_y, min_z, min_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[2] = {max_x, max_y, min_z, max_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[3] = {max_x, min_y, min_z, max_u, min_v, actor_id, mat_comp.material_id, 0}; + + // Face 0 + mesh->indexes[0] = 0; + mesh->indexes[1] = 1; + mesh->indexes[2] = 2; + + mesh->indexes[3] = 0; + mesh->indexes[4] = 2; + mesh->indexes[5] = 3; + + mesh->vertexes[4] = {max_x, min_y, min_z, min_u, min_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[5] = {max_x, max_y, min_z, min_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[6] = {max_x, max_y, max_z, max_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[7] = {max_x, min_y, max_z, max_u, min_v, actor_id, mat_comp.material_id, 0}; + + mesh->indexes[6] = 4; + mesh->indexes[7] = 5; + mesh->indexes[8] = 6; + + mesh->indexes[9] = 4; + mesh->indexes[10] = 6; + mesh->indexes[11] = 7; + + // Back Face + mesh->vertexes[8] = {max_x, min_y, max_z, min_u, min_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[9] = {max_x, max_y, max_z, min_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[10] = {min_x, max_y, max_z, max_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[11] = {min_x, min_y, max_z, max_u, min_v, actor_id, mat_comp.material_id, 0}; + + mesh->indexes[12] = 8; + mesh->indexes[13] = 9; + mesh->indexes[14] = 10; + + mesh->indexes[15] = 8; + mesh->indexes[16] = 10; + mesh->indexes[17] = 11; + + mesh->vertexes[12] = {min_x, min_y, max_z, min_u, min_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[13] = {min_x, max_y, max_z, min_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[14] = {min_x, max_y, min_z, max_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[15] = {min_x, min_y, min_z, max_u, min_v, actor_id, mat_comp.material_id, 0}; + + mesh->indexes[18] = 12; + mesh->indexes[19] = 13; + mesh->indexes[20] = 14; + + mesh->indexes[21] = 12; + mesh->indexes[22] = 14; + mesh->indexes[23] = 15; + + mesh->vertexes[16] = {min_x, max_y, min_z, min_u, min_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[17] = {min_x, max_y, max_z, min_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[18] = {max_x, max_y, max_z, max_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[19] = {max_x, max_y, min_z, max_u, min_v, actor_id, mat_comp.material_id, 0}; + + mesh->indexes[24] = 16; + mesh->indexes[25] = 17; + mesh->indexes[26] = 18; + + mesh->indexes[27] = 16; + mesh->indexes[28] = 18; + mesh->indexes[29] = 19; + + mesh->vertexes[20] = {min_x, min_y, min_z, min_u, min_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[21] = {max_x, min_y, min_z, min_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[22] = {max_x, min_y, max_z, max_u, max_v, actor_id, mat_comp.material_id, 0}; + mesh->vertexes[23] = {min_x, min_y, max_z, max_u, min_v, actor_id, mat_comp.material_id, 0}; + + mesh->indexes[30] = 20; + mesh->indexes[31] = 21; + mesh->indexes[32] = 22; + + mesh->indexes[33] = 20; + mesh->indexes[34] = 22; + mesh->indexes[35] = 23; + + mesh_manager->CalculateNormals(mesh->mesh_id); + + HydraECS *ecs = GetEngine()->ECS(); + HydraMeshComponent mesh_comp; + + mesh_comp.mesh_id = mesh_id; + mesh_comp.mesh_state = HYDRA_STATE::Waiting; + + ecs->AddComponent(GetID(), mesh_comp); +} + +void HydraTestCubeActor::_CreateMaterial() +{ + + HydraEngine *engine = GetEngine(); + std::string filename = std::string(texture_base) + std::string("/DesignArea/DesignArea_Albedo.png"); + + HydraID tex_id = engine->TextureBufferManager()->LoadTexture(filename); + + HydraMaterialBuffer material = {}; + + material.diffuse_texture_id = tex_id; + material.diffuse_colour = glm::vec4(1, 1, 1, 1); + material.metalic_rough = glm::vec4(0, 0.5, 0.3, 1); + HydraID mat_id = engine->MaterialBufferManager()->CreateMaterial(material); + + HydraMaterialComponent mat_comp = {}; + mat_comp.material_id = mat_id; + engine->ECS()->AddComponent(GetID(), mat_comp); +} + +void HydraTestCubeActor::_CreatePhysics() +{ + // HydraECSPhysicsComponent physics_component; + // physics_component.physics_state = Hydra_State::Waiting; + // physics_component.physics_definition.actor_id = GetID(); + // physics_component.physics_definition.physics_type = HydraPhyicsType::Static; + // physics_component.physics_definition.physics_shape = HydraPhysicsShape::HydraBoxShape; + // physics_component.physics_definition.mass = 100000.0f; + // physics_component.physics_definition.extent_x = 1000.0f; + // physics_component.physics_definition.extent_y = 0.5f; + // physics_component.physics_definition.extent_z = 1000.0f; + // physics_component.physics_definition.dynamic_friction = 0.5f; + // physics_component.physics_definition.restitution = 0.5f; + + // HydraECS* ecs = GetEngine()->ECS(); + + // ecs->AddComponent(GetID(), physics_component); +} +void HydraTestCubeActor::_CreateRenderableComponent() +{ + HydraRenderableComponent render_comp; + HydraECS *ecs = GetEngine()->ECS(); + render_comp.renderable_types.set((uint32_t)HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR, true); + ecs->AddComponent(GetID(), render_comp); +} diff --git a/HydraEngine/source/actor/HydraTestCubeActor.h b/HydraEngine/source/actor/HydraTestCubeActor.h new file mode 100644 index 0000000..c2bba56 --- /dev/null +++ b/HydraEngine/source/actor/HydraTestCubeActor.h @@ -0,0 +1,31 @@ +#ifndef HYDRATESTCUBEACTOR +#define HYDRATESTCUBEACTOR + + +#include "HydraActor.h" + +class CLASS_DEFINE HydraTestCubeActor : public HydraActor +{ + private: + double m_scale = 1.0; + double m_widthscale = 1.0f; + HydraID m_material_component = INVALID_HYDRA_ID; + HydraID m_position_component = INVALID_HYDRA_ID; + HydraID m_mesh_component = INVALID_HYDRA_ID; + protected: + void _CreatePosition(); + void _CreateMesh(); + void _CreateMaterial(); + void _CreatePhysics(); + void _CreateRenderableComponent(); + public: + virtual void InitialiseComponents(); + virtual void DeferredInitialiseComponents(); + virtual void Destroy(){} + +}; + + + + +#endif /* HYDRATESTCUBEACTOR */ diff --git a/HydraEngine/source/actor/HydraTextureDebugActor.cpp b/HydraEngine/source/actor/HydraTextureDebugActor.cpp new file mode 100644 index 0000000..d49f7c9 --- /dev/null +++ b/HydraEngine/source/actor/HydraTextureDebugActor.cpp @@ -0,0 +1,87 @@ +#include "HydraTextureDebugActor.h" +#include "../engine/HydraEngine.h" +#include "../actor/HydraActorManager.h" +#include "../task/HydraTask.h" +#include "../ecs/HydraECS.h" +#include "../ecs/components/HydraPositionComponent.h" +#include "../ecs/components/HydraMeshComponent.h" +#include "../ecs/components/HydraRenderableComponent.h" +#include "../ecs/components/HydraMaterialComponent.h" +#include "../buffer/HydraMaterialBufferManager.h" +#include "../buffer/HydraTextureBufferManager.h" +#include "../buffer/HydraMaterialBuffer.h" +#include "../mesh/HydraMeshManager.h" +#include "../mesh/HydraMesh.h" + + + +void HydraTextureDebugActor::_CreateMesh() +{ + HydraMeshManager *mesh_manager = GetEngine()->MeshManager(); + HydraID mesh_id = mesh_manager->CreateMesh(); + HydraMesh *mesh = mesh_manager->GetMesh(mesh_id); + + mesh->vertexes.resize(4); + mesh->indexes.resize(6); + + float scale_x = 1.0f; + float scale_y = 1.0f; + float scale_z = 1.0f; + + float min_x = -0.5f * scale_x; + float min_y = -0.5f * scale_y; + float min_z = 0.5f * scale_z; + + float max_x = 0.5f * scale_x; + float max_y = 0.5f * scale_y; + float max_z = 0.5f * scale_z; + + float min_u = 1; + float min_v = 1; + + float max_u = 0; + float max_v = 0; + + // 1---2 5---6 + // | / | | / | + // 0---3 4---7 + + HydraID actor_id = GetID(); + mesh->vertexes[0] = {min_x, min_y, min_z, min_u, min_v, actor_id, 0, 0, 0,0,0,0,0,0,0,0,0}; + mesh->vertexes[1] = {min_x, max_y, min_z, min_u, max_v, actor_id, 0, 0, 0,0,0,0,0,0,0,0,0}; + mesh->vertexes[2] = {max_x, max_y, min_z, max_u, max_v, actor_id, 0, 0, 0,0,0,0,0,0,0,0,0}; + mesh->vertexes[3] = {max_x, min_y, min_z, max_u, min_v, actor_id, 0, 0, 0,0,0,0,0,0,0,0,0}; + + // Face 0 + mesh->indexes[0] = 0; + mesh->indexes[1] = 1; + mesh->indexes[2] = 2; + + mesh->indexes[3] = 0; + mesh->indexes[4] = 2; + mesh->indexes[5] = 3; + + + HydraECS *ecs = GetEngine()->ECS(); + HydraMeshComponent mesh_comp; + + mesh_comp.mesh_id = mesh_id; + mesh_comp.mesh_state = HYDRA_STATE::Waiting; + + ecs->AddComponent(GetID(), mesh_comp); +} + +void HydraTextureDebugActor::_CreateRenderableComponent() +{ + HydraRenderableComponent render_comp; + HydraECS *ecs = GetEngine()->ECS(); + render_comp.renderable_types.set((uint32_t)HYDRA_RENDERABLE_TYPE::HYDRA_TEXTURE_DEBUG, true); + ecs->AddComponent(GetID(), render_comp); +} + + +void HydraTextureDebugActor::InitialiseComponents() +{ + _CreateMesh(); + _CreateRenderableComponent(); +} diff --git a/HydraEngine/source/actor/HydraTextureDebugActor.h b/HydraEngine/source/actor/HydraTextureDebugActor.h new file mode 100644 index 0000000..c93618d --- /dev/null +++ b/HydraEngine/source/actor/HydraTextureDebugActor.h @@ -0,0 +1,25 @@ +#ifndef HYDRATEXTUREDEBUGACTOR +#define HYDRATEXTUREDEBUGACTOR + + +#include "HydraActor.h" + +class CLASS_DEFINE HydraTextureDebugActor : public HydraActor +{ + private: + HydraID m_mesh_component = INVALID_HYDRA_ID; + + protected: + + void _CreateMesh(); + void _CreateRenderableComponent(); + public: + virtual void InitialiseComponents(); + virtual void Destroy(){} + HydraID Texture_ID = INVALID_HYDRA_ID; +}; + + + + +#endif /* HYDRATEXTUREDEBUGACTOR */ diff --git a/HydraEngine/source/ecs/components/HydraLightComponent.h b/HydraEngine/source/ecs/components/HydraLightComponent.h index 9809b17..305a439 100644 --- a/HydraEngine/source/ecs/components/HydraLightComponent.h +++ b/HydraEngine/source/ecs/components/HydraLightComponent.h @@ -15,6 +15,10 @@ struct HydraLightComponent float cutoff_outer = 0.75f; HydraID entity_id; uint32_t light_type; + uint32_t shadow_map_id = 0; + uint32_t shadow_caster = 0; + uint32_t padding0; + uint32_t padding1; }; #endif /* HYDRAECSLIGHTCOMPONENT */ diff --git a/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.cpp b/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.cpp index 7ab3981..38a20c4 100644 --- a/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.cpp +++ b/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.cpp @@ -21,6 +21,13 @@ void HydraShadowSourceSystem::Initialise() { HydraTaskScheduler *task_scheduler = GetEngine()->TaskScheduler(); + for(uint32_t i = 0; i < MAX_SHADOWS; i++) + { + m_available_shadows.push(i); + } + + m_shadows.resize(MAX_SHADOWS); + HydraID create_gpu_buffer_task_id = task_scheduler->CreateTask(HydraThreadAffinity::Render); HydraCreateGPUBufferTask *task = static_cast(task_scheduler->GetTask(create_gpu_buffer_task_id)); task->Intialise("ShadowBuffer", 1, MAX_SHADOWS * sizeof(HydraShadowSourceComponent), &m_shadow_buffer_id, HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); @@ -32,6 +39,16 @@ void HydraShadowSourceSystem::InitialiseComponent(HydraID entity_id) HydraEngine *engine = GetEngine(); HydraECS *ecs = engine->ECS(); HydraLightComponent &light_comp = ecs->GetComponent(entity_id); + + { + std::lock_guard lock(m_mutex); + assert(m_available_shadows.size() > 0 && "Run out of shadows"); + uint32_t shad_id = m_available_shadows.front(); + m_available_shadows.pop(); + light_comp.shadow_map_id = shad_id; + light_comp.shadow_caster = 1; + } + switch (light_comp.light_type) { case (int)HYDRA_LIGHT_TYPE::HYDRA_LIGHT_DIRECTIONAL: @@ -57,9 +74,9 @@ void HydraShadowSourceSystem::UpdateSystem(float delta_t_seconds) } HydraShadowSourceComponent shad_comp = ecs->GetComponent(entity_id); - shadows.push_back(shad_comp); + m_shadows[light_comp.shadow_map_id] = shad_comp; } - _WriteToGPU(shadows); + _WriteToGPU(); } void HydraShadowSourceSystem::_UpdateDirectionalLight(HydraID entity_id) @@ -69,30 +86,31 @@ void HydraShadowSourceSystem::_UpdateDirectionalLight(HydraID entity_id) HydraPositionComponent pos_comp = ecs->GetComponent(entity_id); HydraShadowSourceComponent &shad_comp = ecs->GetComponent(entity_id); - float view_size = 5.0f; - float view_near = -5.0f; - float view_far = 5.0f; + float view_size = 20.0f; + float view_near = -10.0f; + float view_far = 10.0f; float PI = 3.1415927; float TWO_PI = 6.2831854; - glm::vec3 light_dir = glm::vec3(0, 0, -1); + glm::vec3 light_dir = glm::vec3(0, 0, -1); glm::mat3 light_rot = glm::mat3(1); - glm::vec3 light_euler = pos_comp.orientation; + glm::vec3 light_euler = pos_comp.orientation * glm::vec3(-1,-1,-1); light_rot = glm::eulerAngleXYZ(light_euler.x, light_euler.y, light_euler.z); light_dir = light_rot * light_dir; light_dir = glm::normalize(light_dir); glm::vec3 camera_pos = GetEngine()->Camera()->GetPosition(); - + float light_distance = 2; for (uint32_t i = 0; i < 6; i++) { - glm::vec3 light_pos = camera_pos; // - (light_dir * light_distance); + glm::vec3 light_pos = camera_pos - (light_dir * light_distance); - glm::mat4 light_trans = glm::translate(light_pos * glm::vec3(-1, -1, -1)); + glm::mat4 light_trans = glm::translate(light_pos * glm::vec3(-1, 1, -1)); glm::mat4 light_orient = glm::eulerAngleXYZ(light_euler.x, light_euler.y, light_euler.z); + glm::mat4 view = light_orient * light_trans; - glm::mat4 proj = glm::orthoRH(view_size, -view_size, -view_size, view_size, -15000, 15000); + glm::mat4 proj = glm::ortho(-view_size, view_size, view_size, -view_size, view_near, view_far); shad_comp.far_plane[i] = view_far; shad_comp.near_plane[i] = view_near; @@ -116,22 +134,25 @@ void HydraShadowSourceSystem::_InitialiseDirectionalLight(HydraID entity_id) HydraTaskScheduler *task_scheduler = GetEngine()->TaskScheduler(); + uint32_t depth_texture_id = 0; HydraID create_framebuffer_task_id = task_scheduler->CreateTask(HydraThreadAffinity::Render); HydraCreateShadowFrameBuffer *fb_task = static_cast(task_scheduler->GetTask(create_framebuffer_task_id)); - fb_task->Initialise(&shad_comp.shadow_texture_id, &shad_comp.frame_buffer_id); + fb_task->Initialise(&shad_comp.shadow_texture_id, &depth_texture_id, &shad_comp.frame_buffer_id); + task_scheduler->WaitForTask(create_framebuffer_task_id); + shad_comp.shadow_texture_id = depth_texture_id; } -void HydraShadowSourceSystem::_WriteToGPU(std::vector shadows) +void HydraShadowSourceSystem::_WriteToGPU() { HydraEngine *engine = GetEngine(); HydraECS *ecs = engine->ECS(); - void *buffer = static_cast(shadows.data()); + void *buffer = static_cast(m_shadows.data()); HydraTaskScheduler *task_scheduler = GetEngine()->TaskScheduler(); - HydraID update_buffer_task_id = task_scheduler->CreateTask(HydraThreadAffinity::Render); - HydraUpdatePartialGPUBufferTask *task = static_cast(task_scheduler->GetTask(update_buffer_task_id)); - task->Intialise(m_shadow_buffer_id, 0, sizeof(HydraShadowSourceComponent) * shadows.size(), buffer); + HydraID update_buffer_task_id = task_scheduler->CreateTask(HydraThreadAffinity::Render); + HydraUpdateWholeGPUBufferTask *task = static_cast(task_scheduler->GetTask(update_buffer_task_id)); + task->Intialise(m_shadow_buffer_id, buffer); task_scheduler->WaitForTask(update_buffer_task_id); } \ No newline at end of file diff --git a/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.h b/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.h index 9b17c59..0958f9b 100644 --- a/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.h +++ b/HydraEngine/source/ecs/systems/HydraShadowSourceSystem.h @@ -5,6 +5,8 @@ #include "../components/HydraShadowSourceComponent.h" #include #include +#include +#include class HydraShadowSourceSystem : public HydraSystem { @@ -16,9 +18,11 @@ class HydraShadowSourceSystem : public HydraSystem private: void _UpdateDirectionalLight(HydraID entity_id); void _InitialiseDirectionalLight(HydraID entity_id); - void _WriteToGPU(std::vector shadows); - HydraID m_shadow_buffer_id = INVALID_HYDRA_ID; - + void _WriteToGPU(); + HydraID m_shadow_buffer_id = INVALID_HYDRA_ID; + std::queue m_available_shadows; + std::vector m_shadows; + std::mutex m_mutex; }; diff --git a/HydraEngine/source/pipeline/HydraDeferredPipeline.cpp b/HydraEngine/source/pipeline/HydraDeferredPipeline.cpp index d6ef873..fffb185 100644 --- a/HydraEngine/source/pipeline/HydraDeferredPipeline.cpp +++ b/HydraEngine/source/pipeline/HydraDeferredPipeline.cpp @@ -5,14 +5,18 @@ #include "../buffer/HydraTextureBufferManager.h" #include "../buffer/HydraLightBufferManager.h" #include "PerFrameUBO.hpp" +#include "TextureDebugUBO.hpp" #include "../camera/HydraCamera.h" #include "../renderer/HydraRenderer.h" #include "../ecs/HydraECS.h" #include "../ecs/systems/HydraRenderSystem.h" +#include "../ecs/systems/HydraShadowSourceSystem.h" +#include "../ecs/components/HydraShadowSourceComponent.h" #include "../mesh/StandardVertex.h" #include "../actor/HydraActorManager.h" #include "../actor/HydraOutputActor.h" +#include "../actor/HydraTextureDebugActor.h" void HydraDeferredPipeline::Initialise() { @@ -22,7 +26,8 @@ void HydraDeferredPipeline::Initialise() _CreateOutputActor(); _CreateFrameBuffer(); _CreateColourRenderStage(); - _CreateOutputRenderStage(); + _CreateOutputRenderStage(); + _CreateTextureDebugOutputStage(); } void HydraDeferredPipeline::Shutdown() @@ -38,9 +43,6 @@ void HydraDeferredPipeline::Shutdown() void HydraDeferredPipeline::Render() { _UpdateUBO(); - - - HydraECS* ecs = GetEngine()->ECS(); std::shared_ptr render_system = ecs->GetSystem(); @@ -67,8 +69,7 @@ void HydraDeferredPipeline::Render() for(uint32_t rs_idx = 0; rs_idx Render(render_system->Entities); - } - + } } void HydraDeferredPipeline::_UpdateUBO() @@ -93,6 +94,21 @@ void HydraDeferredPipeline::_UpdateUBO() output_ubo.light_count = light_count; buffer_manager->UpdateWholeBuffer(m_per_frame_output_ubo, &output_ubo); glBindBuffer(GL_UNIFORM_BUFFER, m_per_frame_output_ubo); + + std::shared_ptr sys = GetEngine()->ECS()->GetSystem(); + HydraID texture_id = 0; + if(sys->Entities.size() > 0) + { + auto it = sys->Entities.begin(); + HydraShadowSourceComponent shad_comp = GetEngine()->ECS()->GetComponent(*it); + texture_id = shad_comp.shadow_texture_id; + } + TextureDebugUBO texture_ubo = {}; + texture_ubo.view = glm::translate(glm::vec3(1,1,0)); + texture_ubo.proj = glm::ortho(-2.0f, 2.0f, -2.0f, 2.0f); + texture_ubo.shadow_idx = texture_id; + buffer_manager->UpdateWholeBuffer(m_texture_debug_ubo, &texture_ubo); + glBindBuffer(GL_UNIFORM_BUFFER, m_texture_debug_ubo); } void HydraDeferredPipeline::_CreateFrameBuffer() @@ -166,17 +182,17 @@ void HydraDeferredPipeline::_CreateColourRenderStage() HydraShaderBinding shader_binding = {}; - shader_binding.block_name.push_back("PositionsBuffer"); + shader_binding.block_name.push_back("positions_buffer"); shader_binding.binding_point.push_back(1); shader_binding.buffer_id.push_back(pos_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); - shader_binding.block_name.push_back("MaterialBuffer"); + shader_binding.block_name.push_back("material_buffer"); shader_binding.binding_point.push_back(2); shader_binding.buffer_id.push_back(mat_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); - shader_binding.block_name.push_back("TextureBuffer"); + shader_binding.block_name.push_back("texture_buffer"); shader_binding.binding_point.push_back(3); shader_binding.buffer_id.push_back(tex_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); @@ -187,14 +203,14 @@ void HydraDeferredPipeline::_CreateColourRenderStage() shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER); std::vector textures; - - render_stage->Initialise(shader_path + "deferred_shader.vert", shader_path + "deferred_shader.frag", "", shader_binding, m_frame_buffer_id, textures, true, + GL_BACK, + true, HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR); m_render_stages.push_back(render_stage); } @@ -220,13 +236,13 @@ void HydraDeferredPipeline::_CreateOutputRenderStage() HydraID light_buffer_id = buffer_manager->FindBuffer("LightBuffer"); HydraShaderBinding shader_binding = {}; - shader_binding.block_name.push_back("PositionsBuffer"); + shader_binding.block_name.push_back("position_buffer"); shader_binding.binding_point.push_back(1); shader_binding.buffer_id.push_back(pos_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); - shader_binding.block_name.push_back("TextureBuffer"); + shader_binding.block_name.push_back("texture_buffer"); shader_binding.binding_point.push_back(3); shader_binding.buffer_id.push_back(tex_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); @@ -241,11 +257,10 @@ void HydraDeferredPipeline::_CreateOutputRenderStage() shader_binding.buffer_id.push_back(output_texture_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER); - shader_binding.block_name.push_back("LightBuffer"); + shader_binding.block_name.push_back("light_buffer"); shader_binding.binding_point.push_back(4); shader_binding.buffer_id.push_back(light_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); - render_stage->Initialise(shader_path + "deferred_output_shader.vert", shader_path + "deferred_output_shader.frag", "", @@ -253,17 +268,66 @@ void HydraDeferredPipeline::_CreateOutputRenderStage() 0, textures, false, + GL_BACK, + true, HYDRA_RENDERABLE_TYPE::HYDRA_OUTPUT); m_render_stages.push_back(render_stage); } +void HydraDeferredPipeline::_CreateTextureDebugOutputStage() +{ + HydraRenderStage* render_stage = new HydraRenderStage(); + std::string shader_path = std::string(shader_base); + HydraBufferManager* buffer_manager = GetEngine()->BufferManager(); + + std::vector textures; + + GetEngine()->ActorManager()->InitialiseActor(m_output_actor_id); + HydraOutputActor* actor = static_cast(GetEngine()->ActorManager()->GetActor(m_output_actor_id)); + + HydraTextureBufferManager* tex_buf_manager = GetEngine()->TextureBufferManager(); + + HydraID pos_buffer_id = buffer_manager->FindBuffer("PositionsBuffer"); + HydraID tex_buffer_id = buffer_manager->FindBuffer("TextureBuffer"); + HydraID texture_debug_ubo = buffer_manager->FindBuffer("TextureDebugUBO"); + + HydraShaderBinding shader_binding = {}; + shader_binding.block_name.push_back("position_buffer"); + shader_binding.binding_point.push_back(1); + shader_binding.buffer_id.push_back(pos_buffer_id); + shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); + + shader_binding.block_name.push_back("texture_buffer"); + shader_binding.binding_point.push_back(3); + shader_binding.buffer_id.push_back(tex_buffer_id); + shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); + + shader_binding.block_name.push_back("uniform_per_frame"); + shader_binding.binding_point.push_back(0); + shader_binding.buffer_id.push_back(texture_debug_ubo); + shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER); + + render_stage->Initialise(shader_path + "texture_debug_shader.vert", + shader_path + "texture_debug_shader.frag", "", + shader_binding, + 0, + textures, + false, + GL_BACK, + false, + HYDRA_RENDERABLE_TYPE::HYDRA_TEXTURE_DEBUG); + m_render_stages.push_back(render_stage); +} + void HydraDeferredPipeline::_CreateOutputActor() { m_output_actor_id = GetEngine()->ActorManager()->CreateActor(); GetEngine()->ActorManager()->InitialiseActor(m_output_actor_id); HydraOutputActor* actor = static_cast(GetEngine()->ActorManager()->GetActor(m_output_actor_id)); - + m_texture_debug_actor_id = GetEngine()->ActorManager()->CreateActor(); + GetEngine()->ActorManager()->InitialiseActor(m_texture_debug_actor_id); + HydraTextureDebugActor* tex_actor = static_cast(GetEngine()->ActorManager()->GetActor(m_texture_debug_actor_id)); } void HydraDeferredPipeline::_CreateUBOs() @@ -279,6 +343,7 @@ void HydraDeferredPipeline::_CreateUBOs() m_output_texture_ubo = buffer_manager->CreateGPUBuffer("DeferredOutputTextureUBO", sizeof(uint32_t)*16, 0, HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER); - + m_texture_debug_ubo = buffer_manager->CreateGPUBuffer("TextureDebugUBO", + sizeof(TextureDebugUBO), 0, HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER); } diff --git a/HydraEngine/source/pipeline/HydraDeferredPipeline.h b/HydraEngine/source/pipeline/HydraDeferredPipeline.h index 7d93774..542aa20 100644 --- a/HydraEngine/source/pipeline/HydraDeferredPipeline.h +++ b/HydraEngine/source/pipeline/HydraDeferredPipeline.h @@ -24,9 +24,10 @@ class HydraDeferredPipeline : public HydraPipeline HydraID m_buffer_0 = INVALID_HYDRA_ID; //Frame buffer 0; HydraID m_depth = INVALID_HYDRA_ID; HydraID m_output_actor_id = INVALID_HYDRA_ID; + HydraID m_texture_debug_actor_id = INVALID_HYDRA_ID; HydraID m_output_texture_ubo = INVALID_HYDRA_ID; HydraID m_output_light_ubo = INVALID_HYDRA_ID; - + HydraID m_texture_debug_ubo = INVALID_HYDRA_ID; uint32_t m_frame_buffer_id; void _UpdateUBO(); @@ -35,6 +36,7 @@ class HydraDeferredPipeline : public HydraPipeline void _CreateColourRenderStage(); void _CreateOutputRenderStage(); void _CreateOutputActor(); + void _CreateTextureDebugOutputStage(); void _CreateUBOs(); }; diff --git a/HydraEngine/source/pipeline/HydraForwardPipeline.cpp b/HydraEngine/source/pipeline/HydraForwardPipeline.cpp index a3105c4..7f522db 100644 --- a/HydraEngine/source/pipeline/HydraForwardPipeline.cpp +++ b/HydraEngine/source/pipeline/HydraForwardPipeline.cpp @@ -36,7 +36,7 @@ void HydraForwardPipeline::Initialise() std::vector textures; std::vector rb_attachments; - render_stage->Initialise(shader_path + "forward_shader.vert", shader_path + "forward_shader.frag", "", shader_binding, 0, textures, true, HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR); + render_stage->Initialise(shader_path + "forward_shader.vert", shader_path + "forward_shader.frag", "", shader_binding, 0, textures, true, GL_BACK, true, HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR); m_render_stages.push_back(render_stage); m_per_frame_ubo = buffer_manager->CreateGPUBuffer("PerFrameUBO", diff --git a/HydraEngine/source/pipeline/HydraRenderStage.cpp b/HydraEngine/source/pipeline/HydraRenderStage.cpp index a7485d5..293b433 100644 --- a/HydraEngine/source/pipeline/HydraRenderStage.cpp +++ b/HydraEngine/source/pipeline/HydraRenderStage.cpp @@ -18,15 +18,19 @@ void HydraRenderStage::Initialise(std::string vertex_shader_file, HydraShaderBinding shader_binding, uint32_t framebuffer_id, std::vector textures, - bool enable_culling, + bool enable_culling, + uint32_t cull_face, + bool depth_enable, HYDRA_RENDERABLE_TYPE renderable_type) { m_framebuffer_id = framebuffer_id; m_renderable_type = static_cast(renderable_type); m_shader_binding = shader_binding; m_textures = textures; + m_depth_enable = depth_enable; m_cull = enable_culling; m_program = glCreateProgram(); + m_cull_face = cull_face; if(vertex_shader_file.length() > 0) { m_vertex_shader = _LoadShader(vertex_shader_file, GL_VERTEX_SHADER); @@ -43,6 +47,25 @@ void HydraRenderStage::Initialise(std::string vertex_shader_file, glAttachShader(m_program, m_geometry_shader); } glLinkProgram(m_program); + + int success; +glGetProgramiv(m_program, GL_LINK_STATUS, &success); + +if (!success) { + // 2. Get the log length (optional but recommended) + int logLength; + glGetProgramiv(m_program, GL_INFO_LOG_LENGTH, &logLength); + + // 3. Retrieve and print the error log + char* infoLog = new char[logLength]; + glGetProgramInfoLog(m_program, logLength, NULL, infoLog); + + std::cout << "ERROR::SHADER::PROGRAM::LINKING_FAILED\n" << infoLog << std::endl; + + // 4. Clean up allocated memory + delete[] infoLog; +} + } void HydraRenderStage::ShutDown() @@ -70,12 +93,22 @@ void HydraRenderStage::Render(std::set& entities, uint32_t framebuffer_ if(m_cull) { glEnable(GL_CULL_FACE); + glCullFace(m_cull_face); } else { glDisable(GL_CULL_FACE); } + if(m_depth_enable) + { + glEnable(GL_DEPTH_TEST); + } + else + { + glDisable(GL_DEPTH_TEST); + } + for(const auto& entity_id : entities ) { HydraRenderableComponent render_comp = ecs->GetComponent(entity_id); diff --git a/HydraEngine/source/pipeline/HydraRenderStage.h b/HydraEngine/source/pipeline/HydraRenderStage.h index f27b980..9485836 100644 --- a/HydraEngine/source/pipeline/HydraRenderStage.h +++ b/HydraEngine/source/pipeline/HydraRenderStage.h @@ -17,6 +17,8 @@ class HydraRenderStage : public HydraObject uint32_t framebuffer_id, std::vector textures, bool enable_culling, + uint32_t cull_face, + bool depth_enable, HYDRA_RENDERABLE_TYPE renderable_type); void ShutDown(); void Render(std::set& entities, uint32_t framebuffer_id); @@ -33,7 +35,9 @@ class HydraRenderStage : public HydraObject uint32_t m_program = GL_INVALID_VALUE; uint32_t m_renderable_type; uint32_t m_framebuffer_id = 0; + uint32_t m_cull_face = GL_NONE; bool m_cull = false; + bool m_depth_enable = true; std::vector m_textures; }; diff --git a/HydraEngine/source/pipeline/HydraShadowPipeline.cpp b/HydraEngine/source/pipeline/HydraShadowPipeline.cpp index 04a2f57..7343b70 100644 --- a/HydraEngine/source/pipeline/HydraShadowPipeline.cpp +++ b/HydraEngine/source/pipeline/HydraShadowPipeline.cpp @@ -39,27 +39,35 @@ void HydraShadowPipeline::Render() glEnable(GL_DEPTH_TEST); // Depth testing must be active glDepthMask(GL_TRUE); // Depth buffer must be writable glDepthFunc(GL_LESS); - + + //glEnable(GL_POLYGON_OFFSET_FILL); + //glPolygonOffset(2.5f, 1.0f); + for (HydraID entity_id : shadow_system->Entities) { _UpdateUBO(shadow_idx); // _BindFrameBufferAttachments(entity_id); HydraShadowSourceComponent shad_comp = GetEngine()->ECS()->GetComponent(entity_id); glBindFramebuffer(GL_FRAMEBUFFER, shad_comp.frame_buffer_id); - glBindTextureUnit(0, 0); + // HydraTextureBuffer tex_buffer = GetEngine()->TextureBufferManager()->GetTexture(shad_comp.shadow_texture_id); + // glBindTextureUnit(tex_buffer.gl_tex_id, 0); float depth_value = 1.0f; + float clear_colour[] = {0,0,0}; glClearNamedFramebufferfv(shad_comp.frame_buffer_id, GL_DEPTH, 0, &depth_value); - + glClearNamedFramebufferfv(shad_comp.frame_buffer_id, GL_COLOR, 0, clear_colour); + for (uint32_t rs_idx = 0; rs_idx < m_render_stages.size(); rs_idx++) { m_render_stages[rs_idx]->Render(render_system->Entities, INVALID_HYDRA_ID); } - + glBindFramebuffer(GL_FRAMEBUFFER, 0); shadow_idx++; } + + // glDisable(GL_POLYGON_OFFSET_FILL); } void HydraShadowPipeline::_CreateRenderStage() @@ -69,17 +77,29 @@ void HydraShadowPipeline::_CreateRenderStage() HydraBufferManager *buffer_manager = GetEngine()->BufferManager(); HydraID pos_buffer_id = buffer_manager->FindBuffer("PositionsBuffer"); + HydraID mat_buffer_id = buffer_manager->FindBuffer("MaterialBuffer"); + HydraID tex_buffer_id = buffer_manager->FindBuffer("TextureBuffer"); HydraID shadow_buffer_id = buffer_manager->FindBuffer("ShadowBuffer"); HydraID per_frame_buffer_id = buffer_manager->FindBuffer("ShadowPerFrameUBO"); HydraShaderBinding shader_binding = {}; - shader_binding.block_name.push_back("PositionsBuffer"); + shader_binding.block_name.push_back("positions_buffer"); shader_binding.binding_point.push_back(1); shader_binding.buffer_id.push_back(pos_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); - shader_binding.block_name.push_back("ShadowMapSets"); + shader_binding.block_name.push_back("material_buffer"); + shader_binding.binding_point.push_back(2); + shader_binding.buffer_id.push_back(mat_buffer_id); + shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); + + shader_binding.block_name.push_back("texture_buffer"); + shader_binding.binding_point.push_back(3); + shader_binding.buffer_id.push_back(tex_buffer_id); + shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); + + shader_binding.block_name.push_back("shadow_map_sets"); shader_binding.binding_point.push_back(5); shader_binding.buffer_id.push_back(shadow_buffer_id); shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER); @@ -98,6 +118,8 @@ void HydraShadowPipeline::_CreateRenderStage() 0, textures, true, + GL_FRONT, + true, HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR); m_render_stages.push_back(render_stage); } diff --git a/HydraEngine/source/pipeline/TextureDebugUBO.hpp b/HydraEngine/source/pipeline/TextureDebugUBO.hpp new file mode 100644 index 0000000..4e6bdba --- /dev/null +++ b/HydraEngine/source/pipeline/TextureDebugUBO.hpp @@ -0,0 +1,15 @@ +#ifndef TEXTUREDEBUGUBO +#define TEXTUREDEBUGUBO + + +#include + +struct TextureDebugUBO +{ + glm::mat4 view; + glm::mat4 proj; + uint32_t shadow_idx; + glm::vec3 padding0; +}; + +#endif /* TEXTUREDEBUGUBO */ diff --git a/HydraEngine/source/task/renderer/HydraCreateShadowFrameBuffer.hpp b/HydraEngine/source/task/renderer/HydraCreateShadowFrameBuffer.hpp index bf90ca7..bbdaaf4 100644 --- a/HydraEngine/source/task/renderer/HydraCreateShadowFrameBuffer.hpp +++ b/HydraEngine/source/task/renderer/HydraCreateShadowFrameBuffer.hpp @@ -11,6 +11,7 @@ class HydraCreateShadowFrameBuffer : public HydraTask { private: uint32_t *m_texture_id = 0; + uint32_t *m_depth_texture_id = 0; uint32_t *m_frame_buffer_id = nullptr; protected: @@ -22,26 +23,47 @@ public: HydraTextureBufferManager *tex_buffer_manager = engine->TextureBufferManager(); HydraRenderSettings render_settings = engine->RenderSettings(); - *m_texture_id = tex_buffer_manager->CreateTextureArray("shadow_FB", - SHADOW_MAP_SIZE, SHADOW_MAP_SIZE, - GL_DEPTH_COMPONENT24, - GL_NEAREST, - GL_NEAREST, - 6); + *m_texture_id = tex_buffer_manager->CreateTextureArray("shadow_FB", + SHADOW_MAP_SIZE, SHADOW_MAP_SIZE, + GL_RGBA8, + GL_NEAREST, + GL_NEAREST, + 6); HydraTextureBuffer texture = tex_buffer_manager->GetTexture(*m_texture_id); + *m_depth_texture_id = tex_buffer_manager->CreateTextureArray("shadow_depth_buffer", + SHADOW_MAP_SIZE, SHADOW_MAP_SIZE, + GL_DEPTH_COMPONENT32F, + GL_NEAREST, + GL_NEAREST, + 6); + + HydraTextureBuffer depth_texture = tex_buffer_manager->GetTexture(*m_depth_texture_id); glGenFramebuffers(1, m_frame_buffer_id); glBindFramebuffer(GL_FRAMEBUFFER, *m_frame_buffer_id); - glNamedFramebufferDrawBuffer(*m_frame_buffer_id, GL_NONE); - glNamedFramebufferReadBuffer(*m_frame_buffer_id, GL_NONE); + glTextureParameteri(texture.gl_tex_id, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTextureParameteri(texture.gl_tex_id, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glBindTexture(GL_TEXTURE_2D_ARRAY, texture.gl_tex_id); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + // FIX 1: Set explicit filters for the depth texture to prevent incomplete attachment + glTextureParameteri(depth_texture.gl_tex_id, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTextureParameteri(depth_texture.gl_tex_id, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, texture.gl_tex_id, 0); + glm::vec4 border = glm::vec4(1,1,1,1); + + glTextureParameteri(depth_texture.gl_tex_id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); + glTextureParameteri(depth_texture.gl_tex_id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); + glTextureParameterfv(depth_texture.gl_tex_id, GL_TEXTURE_BORDER_COLOR, &border[0]); + + glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture.gl_tex_id, 0); + glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, depth_texture.gl_tex_id, 0); + + glNamedFramebufferDrawBuffer(*m_frame_buffer_id, GL_COLOR_ATTACHMENT0); + glNamedFramebufferReadBuffer(*m_frame_buffer_id, GL_COLOR_ATTACHMENT0); + + GLenum draw_buffers[] = {GL_COLOR_ATTACHMENT0}; + glNamedFramebufferDrawBuffers(*m_frame_buffer_id, 1, draw_buffers); GLenum status = glCheckNamedFramebufferStatus(*m_frame_buffer_id, GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) @@ -49,13 +71,14 @@ public: std::cout << "Framebuffer error: " << status << std::endl; } glBindFramebuffer(GL_FRAMEBUFFER, 0); - glBindTexture(GL_TEXTURE_2D_ARRAY, 0); - tex_buffer_manager->BindTexture(*m_texture_id, GL_TEXTURE_2D_ARRAY); + + tex_buffer_manager->BindTexture(*m_depth_texture_id, GL_TEXTURE_2D_ARRAY); } - void Initialise(uint32_t *texture_id, uint32_t *frame_buffer_id) + void Initialise(uint32_t *texture_id, uint32_t *depth_texture_id, uint32_t *frame_buffer_id) { m_texture_id = texture_id; m_frame_buffer_id = frame_buffer_id; + m_depth_texture_id = depth_texture_id; } }; #endif /* HYDRACREATESHADOWFRAMEBUFFER */ diff --git a/build/.cmake/api/v1/reply/codemodel-v2-ccd34cf25146cac2c39e.json b/build/.cmake/api/v1/reply/codemodel-v2-ec4f138d26e897b71d3a.json similarity index 93% rename from build/.cmake/api/v1/reply/codemodel-v2-ccd34cf25146cac2c39e.json rename to build/.cmake/api/v1/reply/codemodel-v2-ec4f138d26e897b71d3a.json index 1e55346..c6e4e37 100644 --- a/build/.cmake/api/v1/reply/codemodel-v2-ccd34cf25146cac2c39e.json +++ b/build/.cmake/api/v1/reply/codemodel-v2-ec4f138d26e897b71d3a.json @@ -161,28 +161,28 @@ { "directoryIndex" : 0, "id" : "ALL_BUILD::@6890427a1f51a3e7e1df", - "jsonFile" : "target-ALL_BUILD-Debug-9ddbbbeb4caedf0a48f0.json", + "jsonFile" : "target-ALL_BUILD-Debug-79cb89fa590649c6cd6a.json", "name" : "ALL_BUILD", "projectIndex" : 0 }, { "directoryIndex" : 1, "id" : "ALL_BUILD::@fafd37b19aacd4c483ed", - "jsonFile" : "target-ALL_BUILD-Debug-30097c8e6651db3aff43.json", + "jsonFile" : "target-ALL_BUILD-Debug-21126e6f26f8151b82a1.json", "name" : "ALL_BUILD", "projectIndex" : 1 }, { "directoryIndex" : 0, "id" : "HydraClient::@6890427a1f51a3e7e1df", - "jsonFile" : "target-HydraClient-Debug-78ce361b98c7c89e9629.json", + "jsonFile" : "target-HydraClient-Debug-ccca9689ebe6b19fe65a.json", "name" : "HydraClient", "projectIndex" : 0 }, { "directoryIndex" : 1, "id" : "HydraEngine::@fafd37b19aacd4c483ed", - "jsonFile" : "target-HydraEngine-Debug-2faea7c156292a0c0ce8.json", + "jsonFile" : "target-HydraEngine-Debug-5452e3263cf1470b23a6.json", "name" : "HydraEngine", "projectIndex" : 1 }, @@ -355,28 +355,28 @@ { "directoryIndex" : 0, "id" : "ALL_BUILD::@6890427a1f51a3e7e1df", - "jsonFile" : "target-ALL_BUILD-Release-9ddbbbeb4caedf0a48f0.json", + "jsonFile" : "target-ALL_BUILD-Release-79cb89fa590649c6cd6a.json", "name" : "ALL_BUILD", "projectIndex" : 0 }, { "directoryIndex" : 1, "id" : "ALL_BUILD::@fafd37b19aacd4c483ed", - "jsonFile" : "target-ALL_BUILD-Release-30097c8e6651db3aff43.json", + "jsonFile" : "target-ALL_BUILD-Release-21126e6f26f8151b82a1.json", "name" : "ALL_BUILD", "projectIndex" : 1 }, { "directoryIndex" : 0, "id" : "HydraClient::@6890427a1f51a3e7e1df", - "jsonFile" : "target-HydraClient-Release-5f750d1feb1d099be72b.json", + "jsonFile" : "target-HydraClient-Release-f300bf694420197200c5.json", "name" : "HydraClient", "projectIndex" : 0 }, { "directoryIndex" : 1, "id" : "HydraEngine::@fafd37b19aacd4c483ed", - "jsonFile" : "target-HydraEngine-Release-b1d450122d30c349552d.json", + "jsonFile" : "target-HydraEngine-Release-b044e0a52a51be50ee6d.json", "name" : "HydraEngine", "projectIndex" : 1 }, @@ -549,28 +549,28 @@ { "directoryIndex" : 0, "id" : "ALL_BUILD::@6890427a1f51a3e7e1df", - "jsonFile" : "target-ALL_BUILD-MinSizeRel-9ddbbbeb4caedf0a48f0.json", + "jsonFile" : "target-ALL_BUILD-MinSizeRel-79cb89fa590649c6cd6a.json", "name" : "ALL_BUILD", "projectIndex" : 0 }, { "directoryIndex" : 1, "id" : "ALL_BUILD::@fafd37b19aacd4c483ed", - "jsonFile" : "target-ALL_BUILD-MinSizeRel-30097c8e6651db3aff43.json", + "jsonFile" : "target-ALL_BUILD-MinSizeRel-21126e6f26f8151b82a1.json", "name" : "ALL_BUILD", "projectIndex" : 1 }, { "directoryIndex" : 0, "id" : "HydraClient::@6890427a1f51a3e7e1df", - "jsonFile" : "target-HydraClient-MinSizeRel-0b1754e9511a8dea2861.json", + "jsonFile" : "target-HydraClient-MinSizeRel-707588ed524688a0f034.json", "name" : "HydraClient", "projectIndex" : 0 }, { "directoryIndex" : 1, "id" : "HydraEngine::@fafd37b19aacd4c483ed", - "jsonFile" : "target-HydraEngine-MinSizeRel-8b4acdd146655dce4c11.json", + "jsonFile" : "target-HydraEngine-MinSizeRel-e5876cc85c072c445230.json", "name" : "HydraEngine", "projectIndex" : 1 }, @@ -743,28 +743,28 @@ { "directoryIndex" : 0, "id" : "ALL_BUILD::@6890427a1f51a3e7e1df", - "jsonFile" : "target-ALL_BUILD-RelWithDebInfo-9ddbbbeb4caedf0a48f0.json", + "jsonFile" : "target-ALL_BUILD-RelWithDebInfo-79cb89fa590649c6cd6a.json", "name" : "ALL_BUILD", "projectIndex" : 0 }, { "directoryIndex" : 1, "id" : "ALL_BUILD::@fafd37b19aacd4c483ed", - "jsonFile" : "target-ALL_BUILD-RelWithDebInfo-30097c8e6651db3aff43.json", + "jsonFile" : "target-ALL_BUILD-RelWithDebInfo-21126e6f26f8151b82a1.json", "name" : "ALL_BUILD", "projectIndex" : 1 }, { "directoryIndex" : 0, "id" : "HydraClient::@6890427a1f51a3e7e1df", - "jsonFile" : "target-HydraClient-RelWithDebInfo-19110864938462bdea5b.json", + "jsonFile" : "target-HydraClient-RelWithDebInfo-a4b1a5ac731bdcc03733.json", "name" : "HydraClient", "projectIndex" : 0 }, { "directoryIndex" : 1, "id" : "HydraEngine::@fafd37b19aacd4c483ed", - "jsonFile" : "target-HydraEngine-RelWithDebInfo-800c6fa211e5ae182b46.json", + "jsonFile" : "target-HydraEngine-RelWithDebInfo-ced71872e09d334d9e28.json", "name" : "HydraEngine", "projectIndex" : 1 }, diff --git a/build/.cmake/api/v1/reply/index-2026-07-28T17-43-01-0588.json b/build/.cmake/api/v1/reply/index-2026-08-03T21-15-46-0830.json similarity index 94% rename from build/.cmake/api/v1/reply/index-2026-07-28T17-43-01-0588.json rename to build/.cmake/api/v1/reply/index-2026-08-03T21-15-46-0830.json index d21e78d..e9a057c 100644 --- a/build/.cmake/api/v1/reply/index-2026-07-28T17-43-01-0588.json +++ b/build/.cmake/api/v1/reply/index-2026-08-03T21-15-46-0830.json @@ -27,7 +27,7 @@ "objects" : [ { - "jsonFile" : "codemodel-v2-ccd34cf25146cac2c39e.json", + "jsonFile" : "codemodel-v2-ec4f138d26e897b71d3a.json", "kind" : "codemodel", "version" : { @@ -100,7 +100,7 @@ } }, { - "jsonFile" : "codemodel-v2-ccd34cf25146cac2c39e.json", + "jsonFile" : "codemodel-v2-ec4f138d26e897b71d3a.json", "kind" : "codemodel", "version" : { diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-30097c8e6651db3aff43.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-21126e6f26f8151b82a1.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-30097c8e6651db3aff43.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-21126e6f26f8151b82a1.json index 9fd930e..3293cbc 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-30097c8e6651db3aff43.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-21126e6f26f8151b82a1.json @@ -22,10 +22,10 @@ "dependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "folder" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-9ddbbbeb4caedf0a48f0.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-79cb89fa590649c6cd6a.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-9ddbbbeb4caedf0a48f0.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-79cb89fa590649c6cd6a.json index 93dc2e3..3ef51d0 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-9ddbbbeb4caedf0a48f0.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-79cb89fa590649c6cd6a.json @@ -25,10 +25,10 @@ "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "folder" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-30097c8e6651db3aff43.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-21126e6f26f8151b82a1.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-30097c8e6651db3aff43.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-21126e6f26f8151b82a1.json index 9fd930e..3293cbc 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-30097c8e6651db3aff43.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-21126e6f26f8151b82a1.json @@ -22,10 +22,10 @@ "dependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "folder" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-9ddbbbeb4caedf0a48f0.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-79cb89fa590649c6cd6a.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-9ddbbbeb4caedf0a48f0.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-79cb89fa590649c6cd6a.json index 93dc2e3..3ef51d0 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-9ddbbbeb4caedf0a48f0.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-MinSizeRel-79cb89fa590649c6cd6a.json @@ -25,10 +25,10 @@ "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "folder" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-30097c8e6651db3aff43.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-21126e6f26f8151b82a1.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-30097c8e6651db3aff43.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-21126e6f26f8151b82a1.json index 9fd930e..3293cbc 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-30097c8e6651db3aff43.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-21126e6f26f8151b82a1.json @@ -22,10 +22,10 @@ "dependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "folder" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-9ddbbbeb4caedf0a48f0.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-79cb89fa590649c6cd6a.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-Release-9ddbbbeb4caedf0a48f0.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-79cb89fa590649c6cd6a.json index 93dc2e3..3ef51d0 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-9ddbbbeb4caedf0a48f0.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-RelWithDebInfo-79cb89fa590649c6cd6a.json @@ -25,10 +25,10 @@ "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "folder" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-30097c8e6651db3aff43.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-21126e6f26f8151b82a1.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-Release-30097c8e6651db3aff43.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-Release-21126e6f26f8151b82a1.json index 9fd930e..3293cbc 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-30097c8e6651db3aff43.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-21126e6f26f8151b82a1.json @@ -22,10 +22,10 @@ "dependencies" : [ { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "folder" : diff --git a/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-9ddbbbeb4caedf0a48f0.json b/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-79cb89fa590649c6cd6a.json similarity index 100% rename from build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-9ddbbbeb4caedf0a48f0.json rename to build/.cmake/api/v1/reply/target-ALL_BUILD-Release-79cb89fa590649c6cd6a.json index 93dc2e3..3ef51d0 100644 --- a/build/.cmake/api/v1/reply/target-ALL_BUILD-Debug-9ddbbbeb4caedf0a48f0.json +++ b/build/.cmake/api/v1/reply/target-ALL_BUILD-Release-79cb89fa590649c6cd6a.json @@ -25,10 +25,10 @@ "id" : "HydraClient::@6890427a1f51a3e7e1df" }, { - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "folder" : diff --git a/build/.cmake/api/v1/reply/target-HydraClient-Debug-78ce361b98c7c89e9629.json b/build/.cmake/api/v1/reply/target-HydraClient-Debug-ccca9689ebe6b19fe65a.json similarity index 100% rename from build/.cmake/api/v1/reply/target-HydraClient-Debug-78ce361b98c7c89e9629.json rename to build/.cmake/api/v1/reply/target-HydraClient-Debug-ccca9689ebe6b19fe65a.json index 47646bd..c7b1ff5 100644 --- a/build/.cmake/api/v1/reply/target-HydraClient-Debug-78ce361b98c7c89e9629.json +++ b/build/.cmake/api/v1/reply/target-HydraClient-Debug-ccca9689ebe6b19fe65a.json @@ -107,11 +107,11 @@ "dependencies" : [ { - "backtrace" : 2, - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "backtrace" : 2, + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "id" : "HydraClient::@6890427a1f51a3e7e1df", diff --git a/build/.cmake/api/v1/reply/target-HydraClient-MinSizeRel-0b1754e9511a8dea2861.json b/build/.cmake/api/v1/reply/target-HydraClient-MinSizeRel-707588ed524688a0f034.json similarity index 100% rename from build/.cmake/api/v1/reply/target-HydraClient-MinSizeRel-0b1754e9511a8dea2861.json rename to build/.cmake/api/v1/reply/target-HydraClient-MinSizeRel-707588ed524688a0f034.json index 14caed4..9381a96 100644 --- a/build/.cmake/api/v1/reply/target-HydraClient-MinSizeRel-0b1754e9511a8dea2861.json +++ b/build/.cmake/api/v1/reply/target-HydraClient-MinSizeRel-707588ed524688a0f034.json @@ -107,11 +107,11 @@ "dependencies" : [ { - "backtrace" : 2, - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "backtrace" : 2, + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "id" : "HydraClient::@6890427a1f51a3e7e1df", diff --git a/build/.cmake/api/v1/reply/target-HydraClient-RelWithDebInfo-19110864938462bdea5b.json b/build/.cmake/api/v1/reply/target-HydraClient-RelWithDebInfo-a4b1a5ac731bdcc03733.json similarity index 100% rename from build/.cmake/api/v1/reply/target-HydraClient-RelWithDebInfo-19110864938462bdea5b.json rename to build/.cmake/api/v1/reply/target-HydraClient-RelWithDebInfo-a4b1a5ac731bdcc03733.json index b28d9b3..0e5cae5 100644 --- a/build/.cmake/api/v1/reply/target-HydraClient-RelWithDebInfo-19110864938462bdea5b.json +++ b/build/.cmake/api/v1/reply/target-HydraClient-RelWithDebInfo-a4b1a5ac731bdcc03733.json @@ -107,11 +107,11 @@ "dependencies" : [ { - "backtrace" : 2, - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "backtrace" : 2, + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "id" : "HydraClient::@6890427a1f51a3e7e1df", diff --git a/build/.cmake/api/v1/reply/target-HydraClient-Release-5f750d1feb1d099be72b.json b/build/.cmake/api/v1/reply/target-HydraClient-Release-f300bf694420197200c5.json similarity index 100% rename from build/.cmake/api/v1/reply/target-HydraClient-Release-5f750d1feb1d099be72b.json rename to build/.cmake/api/v1/reply/target-HydraClient-Release-f300bf694420197200c5.json index f63d5ce..331eab5 100644 --- a/build/.cmake/api/v1/reply/target-HydraClient-Release-5f750d1feb1d099be72b.json +++ b/build/.cmake/api/v1/reply/target-HydraClient-Release-f300bf694420197200c5.json @@ -107,11 +107,11 @@ "dependencies" : [ { - "backtrace" : 2, - "id" : "HydraEngine::@fafd37b19aacd4c483ed" + "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" }, { - "id" : "ZERO_CHECK::@6890427a1f51a3e7e1df" + "backtrace" : 2, + "id" : "HydraEngine::@fafd37b19aacd4c483ed" } ], "id" : "HydraClient::@6890427a1f51a3e7e1df", diff --git a/build/.cmake/api/v1/reply/target-HydraEngine-Debug-2faea7c156292a0c0ce8.json b/build/.cmake/api/v1/reply/target-HydraEngine-Debug-5452e3263cf1470b23a6.json similarity index 96% rename from build/.cmake/api/v1/reply/target-HydraEngine-Debug-2faea7c156292a0c0ce8.json rename to build/.cmake/api/v1/reply/target-HydraEngine-Debug-5452e3263cf1470b23a6.json index fe000c5..a27c30d 100644 --- a/build/.cmake/api/v1/reply/target-HydraEngine-Debug-2faea7c156292a0c0ce8.json +++ b/build/.cmake/api/v1/reply/target-HydraEngine-Debug-5452e3263cf1470b23a6.json @@ -200,17 +200,17 @@ 17, 19, 21, - 24, - 27, - 30, - 33, + 23, + 25, + 28, + 31, + 34, 37, - 39, + 41, 43, 47, - 49, - 59, - 61, + 51, + 53, 63, 65, 67, @@ -220,9 +220,9 @@ 75, 77, 79, - 82, - 85, - 87, + 81, + 83, + 86, 89, 91, 93, @@ -231,7 +231,9 @@ 99, 101, 103, - 107 + 105, + 107, + 111 ] } ], @@ -319,17 +321,17 @@ 17, 19, 21, - 24, - 27, - 30, - 33, + 23, + 25, + 28, + 31, + 34, 37, - 39, + 41, 43, 47, - 49, - 59, - 61, + 51, + 53, 63, 65, 67, @@ -339,9 +341,9 @@ 75, 77, 79, - 82, - 85, - 87, + 81, + 83, + 86, 89, 91, 93, @@ -350,7 +352,9 @@ 99, 101, 103, - 107 + 105, + 107, + 111 ] }, { @@ -370,34 +374,34 @@ 18, 20, 22, - 23, - 25, + 24, 26, - 28, + 27, 29, - 31, + 30, 32, - 34, + 33, 35, 36, 38, + 39, 40, - 41, 42, 44, 45, 46, 48, + 49, 50, - 51, 52, - 53, 54, 55, 56, 57, 58, + 59, 60, + 61, 62, 64, 66, @@ -408,10 +412,10 @@ 76, 78, 80, - 81, - 83, + 82, 84, - 86, + 85, + 87, 88, 90, 92, @@ -421,9 +425,11 @@ 100, 102, 104, - 105, 106, - 108 + 108, + 109, + 110, + 112 ] } ], @@ -554,6 +560,28 @@ "path" : "HydraEngine/source/actor/HydraSpotLightActor.h", "sourceGroupIndex" : 1 }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "HydraEngine/source/actor/HydraTestCubeActor.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/actor/HydraTestCubeActor.h", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "HydraEngine/source/actor/HydraTextureDebugActor.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/actor/HydraTextureDebugActor.h", + "sourceGroupIndex" : 1 + }, { "backtrace" : 1, "path" : "HydraEngine/source/buffer/HydraBuffer.h", diff --git a/build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-8b4acdd146655dce4c11.json b/build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-e5876cc85c072c445230.json similarity index 96% rename from build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-8b4acdd146655dce4c11.json rename to build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-e5876cc85c072c445230.json index a331d03..8af6d84 100644 --- a/build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-8b4acdd146655dce4c11.json +++ b/build/.cmake/api/v1/reply/target-HydraEngine-MinSizeRel-e5876cc85c072c445230.json @@ -200,17 +200,17 @@ 17, 19, 21, - 24, - 27, - 30, - 33, + 23, + 25, + 28, + 31, + 34, 37, - 39, + 41, 43, 47, - 49, - 59, - 61, + 51, + 53, 63, 65, 67, @@ -220,9 +220,9 @@ 75, 77, 79, - 82, - 85, - 87, + 81, + 83, + 86, 89, 91, 93, @@ -231,7 +231,9 @@ 99, 101, 103, - 107 + 105, + 107, + 111 ] } ], @@ -319,17 +321,17 @@ 17, 19, 21, - 24, - 27, - 30, - 33, + 23, + 25, + 28, + 31, + 34, 37, - 39, + 41, 43, 47, - 49, - 59, - 61, + 51, + 53, 63, 65, 67, @@ -339,9 +341,9 @@ 75, 77, 79, - 82, - 85, - 87, + 81, + 83, + 86, 89, 91, 93, @@ -350,7 +352,9 @@ 99, 101, 103, - 107 + 105, + 107, + 111 ] }, { @@ -370,34 +374,34 @@ 18, 20, 22, - 23, - 25, + 24, 26, - 28, + 27, 29, - 31, + 30, 32, - 34, + 33, 35, 36, 38, + 39, 40, - 41, 42, 44, 45, 46, 48, + 49, 50, - 51, 52, - 53, 54, 55, 56, 57, 58, + 59, 60, + 61, 62, 64, 66, @@ -408,10 +412,10 @@ 76, 78, 80, - 81, - 83, + 82, 84, - 86, + 85, + 87, 88, 90, 92, @@ -421,9 +425,11 @@ 100, 102, 104, - 105, 106, - 108 + 108, + 109, + 110, + 112 ] } ], @@ -554,6 +560,28 @@ "path" : "HydraEngine/source/actor/HydraSpotLightActor.h", "sourceGroupIndex" : 1 }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "HydraEngine/source/actor/HydraTestCubeActor.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/actor/HydraTestCubeActor.h", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "HydraEngine/source/actor/HydraTextureDebugActor.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/actor/HydraTextureDebugActor.h", + "sourceGroupIndex" : 1 + }, { "backtrace" : 1, "path" : "HydraEngine/source/buffer/HydraBuffer.h", diff --git a/build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-800c6fa211e5ae182b46.json b/build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-ced71872e09d334d9e28.json similarity index 96% rename from build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-800c6fa211e5ae182b46.json rename to build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-ced71872e09d334d9e28.json index a09b9e6..8b99963 100644 --- a/build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-800c6fa211e5ae182b46.json +++ b/build/.cmake/api/v1/reply/target-HydraEngine-RelWithDebInfo-ced71872e09d334d9e28.json @@ -200,17 +200,17 @@ 17, 19, 21, - 24, - 27, - 30, - 33, + 23, + 25, + 28, + 31, + 34, 37, - 39, + 41, 43, 47, - 49, - 59, - 61, + 51, + 53, 63, 65, 67, @@ -220,9 +220,9 @@ 75, 77, 79, - 82, - 85, - 87, + 81, + 83, + 86, 89, 91, 93, @@ -231,7 +231,9 @@ 99, 101, 103, - 107 + 105, + 107, + 111 ] } ], @@ -319,17 +321,17 @@ 17, 19, 21, - 24, - 27, - 30, - 33, + 23, + 25, + 28, + 31, + 34, 37, - 39, + 41, 43, 47, - 49, - 59, - 61, + 51, + 53, 63, 65, 67, @@ -339,9 +341,9 @@ 75, 77, 79, - 82, - 85, - 87, + 81, + 83, + 86, 89, 91, 93, @@ -350,7 +352,9 @@ 99, 101, 103, - 107 + 105, + 107, + 111 ] }, { @@ -370,34 +374,34 @@ 18, 20, 22, - 23, - 25, + 24, 26, - 28, + 27, 29, - 31, + 30, 32, - 34, + 33, 35, 36, 38, + 39, 40, - 41, 42, 44, 45, 46, 48, + 49, 50, - 51, 52, - 53, 54, 55, 56, 57, 58, + 59, 60, + 61, 62, 64, 66, @@ -408,10 +412,10 @@ 76, 78, 80, - 81, - 83, + 82, 84, - 86, + 85, + 87, 88, 90, 92, @@ -421,9 +425,11 @@ 100, 102, 104, - 105, 106, - 108 + 108, + 109, + 110, + 112 ] } ], @@ -554,6 +560,28 @@ "path" : "HydraEngine/source/actor/HydraSpotLightActor.h", "sourceGroupIndex" : 1 }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "HydraEngine/source/actor/HydraTestCubeActor.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/actor/HydraTestCubeActor.h", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "HydraEngine/source/actor/HydraTextureDebugActor.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/actor/HydraTextureDebugActor.h", + "sourceGroupIndex" : 1 + }, { "backtrace" : 1, "path" : "HydraEngine/source/buffer/HydraBuffer.h", diff --git a/build/.cmake/api/v1/reply/target-HydraEngine-Release-b1d450122d30c349552d.json b/build/.cmake/api/v1/reply/target-HydraEngine-Release-b044e0a52a51be50ee6d.json similarity index 96% rename from build/.cmake/api/v1/reply/target-HydraEngine-Release-b1d450122d30c349552d.json rename to build/.cmake/api/v1/reply/target-HydraEngine-Release-b044e0a52a51be50ee6d.json index 88ff0bf..00f9a66 100644 --- a/build/.cmake/api/v1/reply/target-HydraEngine-Release-b1d450122d30c349552d.json +++ b/build/.cmake/api/v1/reply/target-HydraEngine-Release-b044e0a52a51be50ee6d.json @@ -200,17 +200,17 @@ 17, 19, 21, - 24, - 27, - 30, - 33, + 23, + 25, + 28, + 31, + 34, 37, - 39, + 41, 43, 47, - 49, - 59, - 61, + 51, + 53, 63, 65, 67, @@ -220,9 +220,9 @@ 75, 77, 79, - 82, - 85, - 87, + 81, + 83, + 86, 89, 91, 93, @@ -231,7 +231,9 @@ 99, 101, 103, - 107 + 105, + 107, + 111 ] } ], @@ -319,17 +321,17 @@ 17, 19, 21, - 24, - 27, - 30, - 33, + 23, + 25, + 28, + 31, + 34, 37, - 39, + 41, 43, 47, - 49, - 59, - 61, + 51, + 53, 63, 65, 67, @@ -339,9 +341,9 @@ 75, 77, 79, - 82, - 85, - 87, + 81, + 83, + 86, 89, 91, 93, @@ -350,7 +352,9 @@ 99, 101, 103, - 107 + 105, + 107, + 111 ] }, { @@ -370,34 +374,34 @@ 18, 20, 22, - 23, - 25, + 24, 26, - 28, + 27, 29, - 31, + 30, 32, - 34, + 33, 35, 36, 38, + 39, 40, - 41, 42, 44, 45, 46, 48, + 49, 50, - 51, 52, - 53, 54, 55, 56, 57, 58, + 59, 60, + 61, 62, 64, 66, @@ -408,10 +412,10 @@ 76, 78, 80, - 81, - 83, + 82, 84, - 86, + 85, + 87, 88, 90, 92, @@ -421,9 +425,11 @@ 100, 102, 104, - 105, 106, - 108 + 108, + 109, + 110, + 112 ] } ], @@ -554,6 +560,28 @@ "path" : "HydraEngine/source/actor/HydraSpotLightActor.h", "sourceGroupIndex" : 1 }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "HydraEngine/source/actor/HydraTestCubeActor.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/actor/HydraTestCubeActor.h", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "HydraEngine/source/actor/HydraTextureDebugActor.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "HydraEngine/source/actor/HydraTextureDebugActor.h", + "sourceGroupIndex" : 1 + }, { "backtrace" : 1, "path" : "HydraEngine/source/buffer/HydraBuffer.h", diff --git a/build/Debug/HydraClient.pdb b/build/Debug/HydraClient.pdb index d37d277..8650134 100644 Binary files a/build/Debug/HydraClient.pdb and b/build/Debug/HydraClient.pdb differ diff --git a/build/HydraClient.dir/Debug/HydraClient.ilk b/build/HydraClient.dir/Debug/HydraClient.ilk index 929c548..67a66b4 100644 Binary files a/build/HydraClient.dir/Debug/HydraClient.ilk and b/build/HydraClient.dir/Debug/HydraClient.ilk differ diff --git a/build/HydraClient.dir/Debug/HydraClient.tlog/CL.read.1.tlog b/build/HydraClient.dir/Debug/HydraClient.tlog/CL.read.1.tlog index 3222c2c..c988430 100644 Binary files a/build/HydraClient.dir/Debug/HydraClient.tlog/CL.read.1.tlog and b/build/HydraClient.dir/Debug/HydraClient.tlog/CL.read.1.tlog differ diff --git a/build/HydraClient.dir/Debug/HydraClient.tlog/CL.write.1.tlog b/build/HydraClient.dir/Debug/HydraClient.tlog/CL.write.1.tlog index 6c56cb0..8e2333e 100644 Binary files a/build/HydraClient.dir/Debug/HydraClient.tlog/CL.write.1.tlog and b/build/HydraClient.dir/Debug/HydraClient.tlog/CL.write.1.tlog differ diff --git a/build/HydraClient.dir/Debug/vc143.pdb b/build/HydraClient.dir/Debug/vc143.pdb index 3f7436c..65cd2d7 100644 Binary files a/build/HydraClient.dir/Debug/vc143.pdb and b/build/HydraClient.dir/Debug/vc143.pdb differ diff --git a/build/HydraEngine/Debug/HydraEngine.exp b/build/HydraEngine/Debug/HydraEngine.exp index 06d9285..6d84168 100644 Binary files a/build/HydraEngine/Debug/HydraEngine.exp and b/build/HydraEngine/Debug/HydraEngine.exp differ diff --git a/build/HydraEngine/Debug/HydraEngine.pdb b/build/HydraEngine/Debug/HydraEngine.pdb index c7b7e2f..574b1a7 100644 Binary files a/build/HydraEngine/Debug/HydraEngine.pdb and b/build/HydraEngine/Debug/HydraEngine.pdb differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.Build.CppClean.log b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.Build.CppClean.log index c8dd1d6..8653ba8 100644 --- a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.Build.CppClean.log +++ b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.Build.CppClean.log @@ -1,7 +1,4 @@ c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\vc143.pdb -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydramaterialsystem.obj -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydralightsystem.obj -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrasystemmanager.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrasystem.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraecs.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydracamera.obj @@ -10,6 +7,9 @@ c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydratexturebuffermanage c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydramaterialbuffermanager.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydralightbuffermanager.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrabuffermanager.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydratexturedebugactor.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydratestcubeactor.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraspotlightactor.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrapointlightactor.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraplayeractor.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraplaneactor.obj @@ -19,12 +19,9 @@ c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydradirectionallightact c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraactormanager.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraactor.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\cmakecxxcompilerid.obj -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrawindowmanager.obj -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydratask.obj -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrathread.obj -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrataskscheduler.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrataskbarrier.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrarenderer.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrashadowpipeline.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrarenderstage.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrapipeline.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraforwardpipeline.obj @@ -36,14 +33,22 @@ c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraobject.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrainputmanager.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydratransformsystem.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrashadowsourcesystem.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrarendersystem.obj c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrameshsystem.obj -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraspotlightactor.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydramaterialsystem.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydralightsystem.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrasystemmanager.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrawindowmanager.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydratask.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrathread.obj +c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydrataskscheduler.obj c:\code\hydrav3\build\hydraengine\cmakefiles\generate.stamp +c:\code\hydrav3\build\hydraengine\debug\hydraengine.dll +c:\code\hydrav3\build\hydraengine\debug\hydraengine.pdb c:\code\hydrav3\build\hydraengine\debug\hydraengine.lib c:\code\hydrav3\build\hydraengine\debug\hydraengine.exp c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.ilk -c:\code\hydrav3\build\hydraengine\debug\hydraengine.pdb c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\cl.command.1.tlog c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\cl.items.tlog c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\cl.read.1.tlog @@ -51,16 +56,6 @@ c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\cl.writ c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\custombuild.command.1.tlog c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\custombuild.read.1.tlog c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\custombuild.write.1.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064-cvtres.read.1.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064-cvtres.write.1.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064-rc.read.1.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064-rc.write.1.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064.read.1.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064.read.2.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064.read.3.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064.read.4.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064.read.5.tlog -c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.29064.write.1.tlog c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.command.1.tlog c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.read.1.tlog c:\code\hydrav3\build\hydraengine\hydraengine.dir\debug\hydraengine.tlog\link.secondary.1.tlog diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.ilk b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.ilk index ef1b287..a59c2de 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.ilk and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.ilk differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.command.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.command.1.tlog index fea5456..87f9e4d 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.command.1.tlog and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.command.1.tlog differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.read.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.read.1.tlog index cdd0562..a09390b 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.read.1.tlog and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.read.1.tlog differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.write.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.write.1.tlog index c0a6e8d..009cc27 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.write.1.tlog and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/CL.write.1.tlog differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/Cl.items.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/Cl.items.tlog index 652f050..9f69285 100644 --- a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/Cl.items.tlog +++ b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/Cl.items.tlog @@ -8,6 +8,8 @@ C:\Code\HydraV3\HydraEngine\source\actor\HydraPlaneActor.cpp;C:\Code\HydraV3\bui C:\Code\HydraV3\HydraEngine\source\actor\HydraPlayerActor.cpp;C:\Code\HydraV3\build\HydraEngine\HydraEngine.dir\Debug\HydraPlayerActor.obj C:\Code\HydraV3\HydraEngine\source\actor\HydraPointLightActor.cpp;C:\Code\HydraV3\build\HydraEngine\HydraEngine.dir\Debug\HydraPointLightActor.obj C:\Code\HydraV3\HydraEngine\source\actor\HydraSpotLightActor.cpp;C:\Code\HydraV3\build\HydraEngine\HydraEngine.dir\Debug\HydraSpotLightActor.obj +C:\Code\HydraV3\HydraEngine\source\actor\HydraTestCubeActor.cpp;C:\Code\HydraV3\build\HydraEngine\HydraEngine.dir\Debug\HydraTestCubeActor.obj +C:\Code\HydraV3\HydraEngine\source\actor\HydraTextureDebugActor.cpp;C:\Code\HydraV3\build\HydraEngine\HydraEngine.dir\Debug\HydraTextureDebugActor.obj C:\Code\HydraV3\HydraEngine\source\buffer\HydraBufferManager.cpp;C:\Code\HydraV3\build\HydraEngine\HydraEngine.dir\Debug\HydraBufferManager.obj C:\Code\HydraV3\HydraEngine\source\buffer\HydraLightBufferManager.cpp;C:\Code\HydraV3\build\HydraEngine\HydraEngine.dir\Debug\HydraLightBufferManager.obj C:\Code\HydraV3\HydraEngine\source\buffer\HydraMaterialBufferManager.cpp;C:\Code\HydraV3\build\HydraEngine\HydraEngine.dir\Debug\HydraMaterialBufferManager.obj diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.command.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.command.1.tlog index 35e43b8..5aac4c8 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.command.1.tlog and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.command.1.tlog differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.read.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.read.1.tlog index b1e47b0..c852780 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.read.1.tlog and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.read.1.tlog differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.secondary.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.secondary.1.tlog index 3d8df52..20e1050 100644 --- a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.secondary.1.tlog +++ b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.secondary.1.tlog @@ -1,4 +1,4 @@ -^C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\CMAKECXXCOMPILERID.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAACTORMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRABUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRACAMERA.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRADEFERREDPIPELINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRADIRECTIONALLIGHTACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAECS.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAENGINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAFORWARDPIPELINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAGAMEPROXY.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAGLTFACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAGLTFLOADER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAINPUTMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRALIGHTBUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRALIGHTSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAMATERIALBUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAMATERIALSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAMESHMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAMESHSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAOBJECT.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAOUTPUTACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAPIPELINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAPLANEACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAPLAYERACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAPOINTLIGHTACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRARENDERER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRARENDERSTAGE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRARENDERSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASHADOWPIPELINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASHADOWSOURCESYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASPOTLIGHTACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASYSTEMMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATASK.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATASKBARRIER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATASKSCHEDULER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATEXTUREBUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATHREAD.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATRANSFORMSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAVERTEXBUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAWINDOWMANAGER.OBJ +^C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\CMAKECXXCOMPILERID.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAACTORMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRABUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRACAMERA.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRADEFERREDPIPELINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRADIRECTIONALLIGHTACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAECS.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAENGINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAFORWARDPIPELINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAGAMEPROXY.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAGLTFACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAGLTFLOADER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAINPUTMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRALIGHTBUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRALIGHTSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAMATERIALBUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAMATERIALSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAMESHMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAMESHSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAOBJECT.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAOUTPUTACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAPIPELINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAPLANEACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAPLAYERACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAPOINTLIGHTACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRARENDERER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRARENDERSTAGE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRARENDERSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASHADOWPIPELINE.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASHADOWSOURCESYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASPOTLIGHTACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRASYSTEMMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATASK.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATASKBARRIER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATASKSCHEDULER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATESTCUBEACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATEXTUREBUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATEXTUREDEBUGACTOR.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATHREAD.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRATRANSFORMSYSTEM.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAVERTEXBUFFERMANAGER.OBJ|C:\CODE\HYDRAV3\BUILD\HYDRAENGINE\HYDRAENGINE.DIR\DEBUG\HYDRAWINDOWMANAGER.OBJ C:\Code\HydraV3\build\HydraEngine\Debug\HydraEngine.lib C:\Code\HydraV3\build\HydraEngine\Debug\HydraEngine.EXP C:\Code\HydraV3\build\HydraEngine\HydraEngine.dir\Debug\HydraEngine.ilk diff --git a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.write.1.tlog b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.write.1.tlog index ec0a72e..aba8c70 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.write.1.tlog and b/build/HydraEngine/HydraEngine.dir/Debug/HydraEngine.tlog/link.write.1.tlog differ diff --git a/build/HydraEngine/HydraEngine.dir/Debug/vc143.pdb b/build/HydraEngine/HydraEngine.dir/Debug/vc143.pdb index aa852ae..eee4ce7 100644 Binary files a/build/HydraEngine/HydraEngine.dir/Debug/vc143.pdb and b/build/HydraEngine/HydraEngine.dir/Debug/vc143.pdb differ diff --git a/build/HydraEngine/HydraEngine.vcxproj b/build/HydraEngine/HydraEngine.vcxproj index e5edcd5..377bea9 100644 --- a/build/HydraEngine/HydraEngine.vcxproj +++ b/build/HydraEngine/HydraEngine.vcxproj @@ -448,6 +448,10 @@ if %errorlevel% neq 0 goto :VCEnd + + + + diff --git a/build/HydraEngine/HydraEngine.vcxproj.filters b/build/HydraEngine/HydraEngine.vcxproj.filters index 682983b..c9ecd03 100644 --- a/build/HydraEngine/HydraEngine.vcxproj.filters +++ b/build/HydraEngine/HydraEngine.vcxproj.filters @@ -31,6 +31,12 @@ Source Files + + Source Files + + + Source Files + Source Files @@ -168,6 +174,12 @@ Header Files + + Header Files + + + Header Files + Header Files diff --git a/build/linkerrors.txt b/build/linkerrors.txt index eddb5c0..dc75499 100644 --- a/build/linkerrors.txt +++ b/build/linkerrors.txt @@ -1,8 +1,8 @@ ================================================================================ Linker Errors -Generated: 2026-07-28T12:58:05.588Z +Generated: 2026-08-03T13:16:01.235Z Total Errors: 1 ================================================================================ -[LNK1201] (MSVC) -error writing to program database 'C:\Code\HydraV3\build\HydraEngine\Debug\HydraEngine.pdb'; check for insufficient disk space, invalid path, or insufficient privilege [C:\Code\HydraV3\build\HydraEngine\HydraEngine.vcxproj] +[LNK1104] (MSVC) +cannot open file 'C:\Code\HydraV3\build\Debug\HydraClient.exe' [C:\Code\HydraV3\build\HydraClient.vcxproj]