diff --git a/.old/Oriel.cs b/.old/Oriel.cs index b7b5458..ed34c33 100644 --- a/.old/Oriel.cs +++ b/.old/Oriel.cs @@ -12,7 +12,7 @@ public class Oriel { Monolith mono; public Bounds bounds; - Material mat = new Material(Shader.FromFile("oriel.hlsl")); + Material mat = new Material(Shader.FromFile("shaders/oriel.hlsl")); Mesh mesh = Default.MeshCube; public float crown = 0.0666f; diff --git a/add/shaders/compositor.hlsl b/add/shaders/compositor.hlsl index 9dfeb8a..42cfa88 100644 --- a/add/shaders/compositor.hlsl +++ b/add/shaders/compositor.hlsl @@ -35,18 +35,27 @@ psIn vs(vsIn input, uint id : SV_InstanceID) { } float4 ps(psIn input) : SV_TARGET { - float depth = diffuse.Sample(diffuse_s, input.uv).r; + float4 tex = diffuse.Sample(diffuse_s, input.uv); + return tex; // 16 bit DepthTexture *non-linear* depth - // render depth for debug + // render depth for debug by undoing the non-linear depth rcp + float reciprocal_value = tex.r; + float max_distance = 100.0; - if (depth > 0.0) { - depth = 1.0; - } + float depth = 1.0 / (reciprocal_value * (1.0 / max_distance) + 1.0); + + return float4(depth, depth, depth, 1); + + // if (depth > 0.0) { + // depth = 1.0; + // } + + // depth = rcp(depth); // float4 og = mul(float4(input.world, 1), sk_viewproj[input.view_id]); // float depth = (og * rcp(og.w)).z; - return float4(depth, depth, depth, 1); + // return tex; // float4(tex.a, tex.a, tex.a, 1); // float v = -rcp(-val.r); // v = val.r; // return float4(v, v, v, 1); diff --git a/oriels.csproj b/oriels.csproj index 7377c66..82a8ff3 100644 --- a/oriels.csproj +++ b/oriels.csproj @@ -8,7 +8,7 @@ - + diff --git a/src/Backrooms/Mono.cs b/src/Backrooms/Mono.cs index 8da671a..400e0c0 100644 --- a/src/Backrooms/Mono.cs +++ b/src/Backrooms/Mono.cs @@ -20,27 +20,27 @@ public class Mono { thing = new Thing[] { new Thing( model.GetMesh("Carpet"), - new Material(Shader.FromFile("oriel.hlsl")), + new Material(Shader.FromFile("shaders/oriel.hlsl")), "backrooms/Carpet.png" ), new Thing( model.GetMesh("Walls"), - new Material(Shader.FromFile("oriel.hlsl")), + new Material(Shader.FromFile("shaders/oriel.hlsl")), "backrooms/Walls.png" ), new Thing( model.GetMesh("Ceiling"), - new Material(Shader.FromFile("oriel.hlsl")), + new Material(Shader.FromFile("shaders/oriel.hlsl")), "backrooms/Ceiling.png" ), new Thing( model.GetMesh("Vents"), - new Material(Shader.FromFile("oriel.hlsl")), + new Material(Shader.FromFile("shaders/oriel.hlsl")), "backrooms/Vents.png" ), new Thing( model.GetMesh("Lights"), - new Material(Shader.FromFile("oriel.hlsl")), + new Material(Shader.FromFile("shaders/oriel.hlsl")), "backrooms/Lights.png" ), }; diff --git a/src/Elements/color-cube/ColorCube.cs b/src/Elements/color-cube/ColorCube.cs index b393963..655f309 100644 --- a/src/Elements/color-cube/ColorCube.cs +++ b/src/Elements/color-cube/ColorCube.cs @@ -2,7 +2,7 @@ namespace Oriels; public class ColorCube { static Mesh cube = Default.MeshCube; - static Material mat = new Material(Shader.FromFile("colorcube.hlsl")); + static Material mat = new Material(Shader.FromFile("shaders/colorcube.hlsl")); static Material unlit = Default.MaterialUnlit; public float thicc = 0.0025f; public float ogSize = 0.05f; diff --git a/src/Elements/oriel/Compositor.cs b/src/Elements/oriel/Compositor.cs index b1a09f3..80aad7a 100644 --- a/src/Elements/oriel/Compositor.cs +++ b/src/Elements/oriel/Compositor.cs @@ -8,15 +8,15 @@ public class Compositor { Greenyard.Mono greenyard = new Greenyard.Mono(); // bool other = false; - Tex tex; - Material mat = new Material(Shader.FromFile("compositor.hlsl")); + Tex tex, depth; + Material mat = new Material(Shader.FromFile("shaders/compositor.hlsl")); public void Init() { tex = new Tex(TexType.Rendertarget); tex.SetSize(512, 512); - tex.AddZBuffer(TexFormat.Depth16); // DepthStencil - mat[MatParamName.DiffuseTex] = tex; - mat.FaceCull = Cull.Front; + depth = tex.AddZBuffer(TexFormat.Depth32); // DepthStencil + mat[MatParamName.DiffuseTex] = depth; + mat.FaceCull = Cull.None; // Renderer.Blit(tex, newMat) @@ -28,17 +28,28 @@ public class Compositor { public void Frame() { Mono mono = Mono.inst; - // Renderer.RenderTo(tex, - // Matrix.TR(V.XYZ(0, 1, 0), Quat.FromAngles(0, 180, 0)), - // Matrix.Perspective(60, 1, 0.1f, 100), - // RenderLayer.All // & ~RenderLayer.Layer1 - // ); + if (Input.Key(Key.Space).IsJustActive()) { + // add the depth tex color.r's up and see if they are > 0 + float r = 0; + Color32[] cols = depth.GetColors(); + for (int i = 0; i < cols.Length; i++) { + r += cols[i].r; + } + Console.WriteLine($"r: {r}"); + } - + Default.MeshQuad.Draw(mat, + Matrix.TRS(V.XYZ(-0.90f, 1.16f, 1.44f), Quat.LookDir(0.63f, 0.78f, 0.02f), 0.5f) + ); + + Renderer.RenderTo(tex, + Matrix.TR(V.XYZ(-0.90f, 1.16f, 1.44f), Quat.LookDir(0.63f, 0.78f, 0.02f)), + Matrix.Perspective(60, 1, 0.1f, 100), + RenderLayer.All, // & ~RenderLayer.Layer1 + RenderClear.All, + default(Rect) + ); - // Default.MeshQuad.Draw(mat, - // Matrix.TR(V.XYZ(0, 1, 0), Quat.FromAngles(0, 0, 0)) - // ); // backrooms.oriel.Frame(); // greenyard.oriel.Frame(); diff --git a/src/Elements/oriel/Oriel.cs b/src/Elements/oriel/Oriel.cs index 9ff937a..e67882d 100644 --- a/src/Elements/oriel/Oriel.cs +++ b/src/Elements/oriel/Oriel.cs @@ -3,9 +3,9 @@ namespace Oriels; public class Oriel { Material matClear = new Material(Shader.Default); - public Material matOriel = new Material(Shader.FromFile("oriel.hlsl")); - Material matFrame = new Material(Shader.FromFile("frame.hlsl")); - Material matPanes = new Material(Shader.FromFile("panes.hlsl")); + public Material matOriel = new Material(Shader.FromFile("shaders/oriel.hlsl")); + Material matFrame = new Material(Shader.FromFile("shaders/frame.hlsl")); + Material matPanes = new Material(Shader.FromFile("shaders/panes.hlsl")); public Matrix matrix, matrixInv; public Bounds bounds; diff --git a/src/Greenyard/Mono.cs b/src/Greenyard/Mono.cs index 93ebfc8..6c399c0 100644 --- a/src/Greenyard/Mono.cs +++ b/src/Greenyard/Mono.cs @@ -10,7 +10,7 @@ public class Mono { Model greenyardModel = Model.FromFile("greenyard.glb"); Mesh[] greenyard; - Material greenyardMat = new Material(Shader.FromFile("/oriel.hlsl")); + Material greenyardMat = new Material(Shader.FromFile("shaders/oriel.hlsl")); Matrix matrix = Matrix.Identity; Vec3 offset = new Vec3(2, 1, -12);