Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 42 additions & 29 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -156,29 +156,31 @@ set(RENDERER_SOURCES
src/renderer/environment/environment.h
src/renderer/environment/environment_constants.h
src/renderer/environment/environment_types.h
src/renderer/pipelines/deferred_mrt/deferred_mrt.cpp
src/renderer/pipelines/deferred_mrt/deferred_mrt.h
src/renderer/pipelines/deferred_resolve/deferred_resolve.cpp
src/renderer/pipelines/deferred_resolve/deferred_resolve.h
src/renderer/pipelines/environment/environment_pipeline.cpp
src/renderer/pipelines/environment/environment_pipeline.h
src/renderer/pipelines/post_process/post_process_pipeline.cpp
src/renderer/pipelines/post_process/post_process_pipeline.h
src/renderer/pipelines/visibility_pass/visibility_pass.cpp
src/renderer/pipelines/visibility_pass/visibility_pass.h
src/renderer/pipelines/temporal_antialiasing_pipeline/temporal_antialiasing_pipeline.cpp
src/renderer/pipelines/temporal_antialiasing_pipeline/temporal_antialiasing_pipeline.h
src/renderer/pipelines/basic_compute/basic_compute_pipeline.cpp
src/renderer/pipelines/basic_compute/basic_compute_pipeline.h
src/renderer/pipelines/basic_render/basic_render_pipeline.cpp
src/renderer/pipelines/basic_render/basic_render_pipeline.h
src/renderer/pipelines/geometry/deferred_mrt/deferred_mrt_pipeline.cpp
src/renderer/pipelines/geometry/deferred_mrt/deferred_mrt_pipeline.h
src/renderer/pipelines/geometry/deferred_mrt/deferred_mrt_pipeline_types.h
src/renderer/pipelines/geometry/deferred_resolve/deferred_resolve_pipeline.cpp
src/renderer/pipelines/geometry/deferred_resolve/deferred_resolve_pipeline.h
src/renderer/pipelines/geometry/deferred_resolve/deferred_resolve_pipeline_types.h
src/renderer/pipelines/geometry/environment/environment_pipeline.cpp
src/renderer/pipelines/geometry/environment/environment_pipeline.h
src/renderer/pipelines/post/post_process/post_process_pipeline.cpp
src/renderer/pipelines/post/post_process/post_process_pipeline.h
src/renderer/pipelines/visibility_pass/visibility_pass_pipeline.cpp
src/renderer/pipelines/visibility_pass/visibility_pass_pipeline.h
src/renderer/pipelines/post/temporal_antialiasing/temporal_antialiasing_pipeline.cpp
src/renderer/pipelines/post/temporal_antialiasing/temporal_antialiasing_pipeline.h
src/renderer/pipelines/basic/basic_compute/basic_compute_pipeline.cpp
src/renderer/pipelines/basic/basic_compute/basic_compute_pipeline.h
src/renderer/pipelines/basic/basic_render/basic_render_pipeline.cpp
src/renderer/pipelines/basic/basic_render/basic_render_pipeline.h
src/renderer/lighting/directional_light.h
src/renderer/lighting/directional_light.cpp
src/renderer/lighting/shadows/cascaded_shadow_map.cpp
src/renderer/lighting/shadows/cascaded_shadow_map.h
src/renderer/lighting/shadows/shadow_constants.cpp
src/renderer/lighting/shadows/shadow_constants.h
src/renderer/lighting/shadows/shadow_types.h
src/renderer/pipelines/shadows/cascaded_shadow_map/cascaded_shadow_map.cpp
src/renderer/pipelines/shadows/cascaded_shadow_map/cascaded_shadow_map.h
src/renderer/pipelines/shadows/cascaded_shadow_map/shadow_constants.cpp
src/renderer/pipelines/shadows/cascaded_shadow_map/shadow_constants.h
src/renderer/pipelines/shadows/cascaded_shadow_map/shadow_types.h
src/renderer/descriptor_buffer/descriptor_buffer.cpp
src/renderer/descriptor_buffer/descriptor_buffer.h
src/renderer/descriptor_buffer/descriptor_buffer_sampler.cpp
Expand All @@ -188,7 +190,6 @@ set(RENDERER_SOURCES
src/renderer/descriptor_buffer/descriptor_buffer_uniform.cpp
src/renderer/descriptor_buffer/descriptor_buffer_uniform.h
src/renderer/assets/render_object/render_object_constants.h
src/renderer/post_process/post_process_types.h
)


Expand Down Expand Up @@ -222,8 +223,8 @@ set(TEMP_SOURCES
src/util/noise_utils.h
src/renderer/terrain/terrain_chunk.cpp
src/renderer/terrain/terrain_chunk.h
src/renderer/pipelines/terrain/terrain_pipeline.cpp
src/renderer/pipelines/terrain/terrain_pipeline.h
src/renderer/pipelines/geometry/terrain/terrain_pipeline.cpp
src/renderer/pipelines/geometry/terrain/terrain_pipeline.h
src/core/scene/map.cpp
src/core/scene/map.h
src/core/game_object/terrain.h
Expand All @@ -241,12 +242,24 @@ set(TEMP_SOURCES
src/renderer/assets/texture/texture_resource.cpp
src/renderer/assets/texture/texture_resource.h
src/renderer/assets/texture/texture_types.h
src/renderer/lighting/ambient_occlusion/ground_truth/ground_truth_ambient_occlusion.cpp
src/renderer/lighting/ambient_occlusion/ground_truth/ground_truth_ambient_occlusion.h
src/renderer/lighting/ambient_occlusion/ambient_occlusion_types.h
src/renderer/pipelines/transparent_pipeline/transparent_pipeline.cpp
src/renderer/pipelines/transparent_pipeline/transparent_pipeline.h
src/renderer/pipelines/shadows/ground_truth_ambient_occlusion/ground_truth_ambient_occlusion_pipeline.cpp
src/renderer/pipelines/shadows/ground_truth_ambient_occlusion/ground_truth_ambient_occlusion_pipeline.h
src/renderer/pipelines/shadows/ground_truth_ambient_occlusion/ambient_occlusion_types.h
src/renderer/pipelines/geometry/transparent_pipeline/transparent_pipeline.cpp
src/renderer/pipelines/geometry/transparent_pipeline/transparent_pipeline.h
src/engine_constants.h
src/renderer/pipelines/shadows/contact_shadow/contact_shadows_pipeline.cpp
src/renderer/pipelines/shadows/contact_shadow/contact_shadows_pipeline.h
src/renderer/pipelines/shadows/contact_shadow/contact_shadows_pipeline_types.h

src/renderer/pipelines/geometry/environment/environment_pipeline_types.h
src/renderer/pipelines/basic/basic_render/basic_render_pipeline_types.h
src/renderer/pipelines/post/post_process/post_process_pipeline_types.h
src/renderer/pipelines/post/temporal_antialiasing/temporal_antialiasing_pipeline_types.h
src/renderer/pipelines/geometry/terrain/terrain_pipeline_types.h
src/renderer/pipelines/geometry/transparent_pipeline/transparent_pipeline_types.h
src/renderer/pipelines/basic/basic_compute/basic_compute_pipeline_types.h
src/renderer/pipelines/visibility_pass/visibility_pass_pipeline_types.h

)

Expand Down
96 changes: 93 additions & 3 deletions assets/maps/sampleScene.willmap
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
},
"metadata": {
"name": "sampleScene",
"created": "2025-04-06 11:32:54",
"created": "2025-04-21 21:26:24",
"formatVersion": 1
},
"rootComponents": {
Expand Down Expand Up @@ -236,7 +236,7 @@
"transform": {
"position": {
"x": 0.0,
"y": 41.5,
"y": 38.79999923706055,
"z": 0.0
},
"rotation": {
Expand All @@ -262,7 +262,7 @@
"RigidBodyComponent": {
"properties": {
"isActive": true,
"motionType": 1,
"motionType": 2,
"layer": 1,
"shapeType": 0,
"shapeParams": {
Expand Down Expand Up @@ -653,6 +653,96 @@
}
}
]
},
{
"id": 15,
"name": "GameObject_15",
"transform": {
"position": {
"x": 0.0,
"y": 37.70000076293945,
"z": 0.0
},
"rotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"scale": {
"x": 20.0,
"y": 0.20000000298023224,
"z": 20.0
}
},
"components": {
"MeshRendererComponent": {
"renderReference": 3129368917,
"renderMeshIndex": 1,
"renderIsVisible": true,
"renderIsShadowCaster": true,
"componentName": "Mesh Renderer"
},
"RigidBodyComponent": {
"properties": {
"isActive": true,
"motionType": 1,
"layer": 0,
"shapeType": 1,
"shapeParams": {
"x": 10.0,
"y": 0.10000000149011612,
"z": 10.0
}
},
"componentName": "New RigidBodyComponent"
}
}
},
{
"id": 16,
"name": "GameObject_16",
"transform": {
"position": {
"x": -7.5,
"y": 38.79999923706055,
"z": 0.0
},
"rotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
}
},
"components": {
"MeshRendererComponent": {
"renderReference": 3129368917,
"renderMeshIndex": 0,
"renderIsVisible": true,
"renderIsShadowCaster": true,
"componentName": "Mesh Renderer"
},
"RigidBodyComponent": {
"properties": {
"isActive": true,
"motionType": 2,
"layer": 1,
"shapeType": 0,
"shapeParams": {
"x": 1.0,
"y": 0.0,
"z": 0.0
}
},
"componentName": "New RigidBodyComponent"
}
}
}
]
}
Expand Down
29 changes: 15 additions & 14 deletions assets/settings.willengine
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,33 @@
},
"mainLight": {
"direction": [
0.007031798828393221,
-0.9709741473197937,
-0.23908114433288574
-0.005322144832462072,
-0.9349234104156494,
-0.35480964183807373
],
"color": [
1.0,
1.0,
0.20000000298023224,
0.4000000059604645,
1.0
],
"intensity": 1.0
"intensity": 50.0
},
"cameraProperties": {
"position": [
-5.494653224945068,
111.15990447998047,
115.60420227050781
112.34994506835938,
83.79894256591797,
-50.39910125732422
],
"rotation": [
0.15897978842258453,
0.01722628064453602,
0.002778323134407401,
-0.9871276021003723
-0.4555923640727997,
-0.2922893166542053,
-0.16135302186012268,
0.8252077102661133
],
"fov": 1.3089969158172607,
"aspectRatio": 1.7777777910232544,
"nearPlane": 1000.0,
"farPlane": 0.10000000149011612
}
},
"environmentMapIndex": 3
}
17 changes: 4 additions & 13 deletions shaders/ambient_occlusion/ground_truth/gtao_main_pass.comp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#version 460

#include "common.glsl"
#include "scene.glsl"
#include "gtao.glsl"

Expand Down Expand Up @@ -102,15 +103,6 @@ vec4 reconstructViewSpacePosition(vec2 uv, float viewDepth) {
return positionVS;
}

mat3 adjugate(mat4 m) {
return mat3(
cross(m[1].xyz, m[2].xyz),
cross(m[2].xyz, m[0].xyz),
cross(m[0].xyz, m[1].xyz)
);

}

void main() {
if (pushConstants.debug == -1){
return;
Expand All @@ -129,8 +121,8 @@ void main() {
vec4 valuesBR = textureGatherOffset(prefilteredDepth, gatherCenter, ivec2(1, 1), 0);
float viewSpaceZM = valuesUL.y;
const float viewSpaceZL = valuesUL.x;
const float viewSpaceZR = valuesUL.z;
const float viewSpaceZT = valuesBR.z;
const float viewSpaceZT = valuesUL.z;
const float viewSpaceZR = valuesBR.z;
const float viewSpaceZB = valuesBR.x;

vec4 edges = XE_GTAO_CalculateDepthEdges(viewSpaceZM, viewSpaceZL, viewSpaceZR, viewSpaceZT, viewSpaceZB);
Expand All @@ -139,8 +131,7 @@ void main() {


// Get view space normal by sampling normal buffer and converting from world to view (code not relevant)
vec3 worldNormal = texture(normalBuffer, uv).rgb;
vec3 viewNormal = adjugate(sceneData.view) * worldNormal;
vec3 viewNormal = texture(normalBuffer, uv).rgb;

if (pushConstants.debug == 2){
imageStore(debugImage, screenPos, vec4(viewNormal, 1.0f));
Expand Down
13 changes: 8 additions & 5 deletions shaders/deferredMrt.frag
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@


// world space
layout (location = 0) in vec3 inPosition;
layout (location = 1) in vec3 inNormal;
layout (location = 0) in vec3 inViewPosition;
layout (location = 1) in vec3 inViewNormal;
layout (location = 2) in vec4 inColor;
layout (location = 3) in vec2 inUV;
layout (location = 4) in flat uint inMaterialIndex;
layout (location = 5) in flat uint inBHasTransparent;
layout (location = 5) in flat uint inHasTransparent;
layout (location = 6) in vec4 inCurrMvpPosition;
layout (location = 7) in vec4 inPrevMvpPosition;

Expand Down Expand Up @@ -45,13 +45,16 @@ void main() {
}
albedo = albedo * inColor * m.colorFactor;

// Look into custom shaders specifically for these? More draw commands vs branching...
// 1 is transparent blend type
if (m.alphaCutoff.y == 1) {
// Draw only if alpha is close enough to 1
if (albedo.w <= 1.0 - TRANSPARENT_ALPHA_EPSILON) {
discard;
}
}

// 2 is "mask" (cutout) blend type
if (m.alphaCutoff.y == 2){
// 2 is "mask" blend type
if (albedo.w < m.alphaCutoff.x){
Expand All @@ -71,9 +74,9 @@ void main() {
}


normalTarget = vec4(normalize(inNormal), 0.0f);
normalTarget = vec4(normalize(inViewNormal), 0.0f);
albedoTarget = vec4(albedo.xyz, 1.0f);
pbrTarget = vec4(metallic, roughness, 0.0f, inBHasTransparent);
pbrTarget = vec4(metallic, roughness, 0.0f, inHasTransparent);

vec2 currNdc = inCurrMvpPosition.xy / inCurrMvpPosition.w;
vec2 prevNdc = inPrevMvpPosition.xy / inPrevMvpPosition.w;
Expand Down
Loading
Loading