aboutsummaryrefslogtreecommitdiff
path: root/Assets/Shaders
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-20 02:59:35 +0200
committerhachem <im@hachem.wtf>2026-08-20 02:59:35 +0200
commit8791a887624ba6503a8dca1d50bb0b990c2b2b9c (patch)
treed08c9524f675c074036cd5e23cdb1e9820ca4cb2 /Assets/Shaders
parent5b361d81dbd2af0d0e99b9eb1adebea76ff05db0 (diff)
[chore]: delete dirs
Diffstat (limited to 'Assets/Shaders')
-rw-r--r--Assets/Shaders/Blur.slang60
-rw-r--r--Assets/Shaders/EquirectToCubemap.slang33
-rw-r--r--Assets/Shaders/Geodesic.slang490
-rw-r--r--Assets/Shaders/Grid.slang34
-rw-r--r--Assets/Shaders/Skybox.slang23
-rw-r--r--Assets/Shaders/Sphere.slang67
-rw-r--r--Assets/Shaders/TexturedQuad.slang28
-rw-r--r--Assets/Shaders/VkPipelineTest.slang25
8 files changed, 0 insertions, 760 deletions
diff --git a/Assets/Shaders/Blur.slang b/Assets/Shaders/Blur.slang
deleted file mode 100644
index 17e4eae..0000000
--- a/Assets/Shaders/Blur.slang
+++ /dev/null
@@ -1,60 +0,0 @@
-struct VSInput
-{
- float2 position : POSITION;
- float2 texCoord : TEXCOORD0;
-};
-
-struct VSOutput
-{
- float4 position : SV_Position;
- float2 texCoord : TEXCOORD0;
-};
-
-[shader("vertex")]
-VSOutput vertexMain(VSInput input)
-{
- VSOutput output;
- output.position = float4(input.position, 0.0, 1.0);
- output.texCoord = input.texCoord;
- return output;
-}
-
-Sampler2D u_ScreenTexture;
-uniform float2 u_Resolution;
-uniform float u_BlurStrength;
-uniform float u_GlowIntensity;
-
-[shader("fragment")]
-float4 fragmentMain(VSOutput input) : SV_Target
-{
- float2 texelSize = 1.0 / u_Resolution;
- float4 centerColor = u_ScreenTexture.Sample(input.texCoord);
-
- float brightness = (centerColor.r + centerColor.g + centerColor.b) / 3.0;
- float glowMask = smoothstep(0.05, 0.3, brightness);
-
- float4 blurredColor = float4(0.0, 0.0, 0.0, 0.0);
- float totalWeight = 0.0;
-
- for (int x = -8; x <= 8; x++)
- {
- for (int y = -8; y <= 8; y++)
- {
- float2 offset = float2(x, y) * texelSize * u_BlurStrength;
- float4 sampleColor = u_ScreenTexture.Sample(input.texCoord + offset);
-
- float weight = exp(-float(x * x + y * y) / (2.0 * 8.0 * 8.0));
- blurredColor += sampleColor * weight;
- totalWeight += weight;
- }
- }
-
- blurredColor /= totalWeight;
-
- float3 emissionColor = float3(1.0, 0.8, 0.6);
- float3 glowColor = emissionColor * glowMask * u_GlowIntensity * 2.0;
- float3 auraColor = blurredColor.rgb * glowMask * u_GlowIntensity * 0.8;
- float3 finalColor = centerColor.rgb + glowColor + auraColor;
-
- return float4(finalColor, centerColor.a);
-}
diff --git a/Assets/Shaders/EquirectToCubemap.slang b/Assets/Shaders/EquirectToCubemap.slang
deleted file mode 100644
index 9b2ea4b..0000000
--- a/Assets/Shaders/EquirectToCubemap.slang
+++ /dev/null
@@ -1,33 +0,0 @@
-uniform float4x4 u_Projection;
-uniform float4x4 u_View;
-
-struct VSInput { float3 position : POSITION; };
-struct VSOutput { float4 position : SV_Position; float3 worldPos : TEXCOORD0; };
-
-[shader("vertex")]
-VSOutput vertexMain(VSInput input)
-{
- VSOutput output;
- output.worldPos = input.position;
- output.position = mul(u_Projection, mul(u_View, float4(input.position, 1.0)));
- return output;
-}
-
-Sampler2D u_EquirectangularMap;
-static const float2 invAtan = float2(0.1591, 0.3183);
-
-float2 SampleSphericalMap(float3 v)
-{
- float2 uv = float2(atan2(v.z, v.x), asin(v.y));
- uv *= invAtan;
- uv += 0.5;
- return uv;
-}
-
-[shader("fragment")]
-float4 fragmentMain(VSOutput input) : SV_Target
-{
- float2 uv = SampleSphericalMap(normalize(input.worldPos));
- float3 color = u_EquirectangularMap.Sample(uv).rgb;
- return float4(color, 1.0);
-}
diff --git a/Assets/Shaders/Geodesic.slang b/Assets/Shaders/Geodesic.slang
deleted file mode 100644
index 9490f21..0000000
--- a/Assets/Shaders/Geodesic.slang
+++ /dev/null
@@ -1,490 +0,0 @@
-struct VSInput { float2 position : POSITION; float2 texCoord : TEXCOORD0; };
-struct VSOutput { float4 position : SV_Position; float2 texCoord : TEXCOORD0; };
-
-[shader("vertex")]
-VSOutput vertexMain(VSInput input)
-{
- VSOutput output;
- output.position = float4(input.position, 0.0, 1.0);
- output.texCoord = input.texCoord;
- return output;
-}
-
-struct Camera
-{
- float3 camPos; float _pad0;
- float3 camRight; float _pad1;
- float3 camUp; float _pad2;
- float3 camForward; float _pad3;
- float tanHalfFov;
- float aspect;
- bool moving;
- int _pad4;
-};
-ConstantBuffer<Camera> cam;
-
-struct Disk
-{
- float disk_r1;
- float disk_r2;
- float disk_num;
- float thickness;
- float disk_density;
-};
-ConstantBuffer<Disk> disk;
-
-struct Objects
-{
- int numObjects;
- float4 objPosRadius[16];
- float4 objColor[16];
- float mass[16];
-};
-ConstantBuffer<Objects> obj;
-
-struct Simulation
-{
- int maxStepsMoving;
- int maxStepsStatic;
- float earlyExitDistance;
- float time;
-};
-ConstantBuffer<Simulation> sim;
-
-SamplerCube u_HDRIEnvironment;
-
-static const float SagA_rs = 1.269e10;
-static const float D_LAMBDA = 1e7;
-static const float ESCAPE_R = 1e30;
-
-static const int DEFAULT_MAX_STEPS_MOVING = 12000;
-static const int DEFAULT_MAX_STEPS_STATIC = 8000;
-static const float DEFAULT_EARLY_EXIT_DISTANCE = 2e12;
-
-static const float MIN_STEP_SIZE = 1e6;
-static const float MAX_STEP_SIZE = 5e7;
-
-struct Hit
-{
- float4 objectColor;
- float3 hitCenter;
- float hitRadius;
-};
-
-float3 SampleHDRI(float3 direction)
-{
- return u_HDRIEnvironment.Sample(direction).rgb;
-}
-
-float hash(float p)
-{
- p = frac(p * 0.1031);
- p *= p + 33.33;
- p *= p + p;
- return frac(p);
-}
-
-float hash(float2 p)
-{
- float3 p3 = frac(float3(p.xyx) * float3(0.1031, 0.1030, 0.0973));
- p3 += dot(p3, p3.yzx + 33.33);
- return frac((p3.x + p3.y) * p3.z);
-}
-
-float hash(float3 p)
-{
- p = frac(p * float3(0.1031, 0.1030, 0.0973));
- p += dot(p, p.yxz + 33.33);
- return frac((p.x + p.y) * p.z);
-}
-
-float noise(float3 x)
-{
- float3 i = floor(x);
- float3 fr = frac(x);
-
- float3 u = fr * fr * (3.0 - 2.0 * fr);
-
- float a = hash(i);
- float b = hash(i + float3(1.0, 0.0, 0.0));
- float c = hash(i + float3(0.0, 1.0, 0.0));
- float d = hash(i + float3(1.0, 1.0, 0.0));
- float e = hash(i + float3(0.0, 0.0, 1.0));
- float f = hash(i + float3(1.0, 0.0, 1.0));
- float g = hash(i + float3(0.0, 1.0, 1.0));
- float h = hash(i + float3(1.0, 1.0, 1.0));
-
- return lerp(lerp(lerp(a, b, u.x), lerp(c, d, u.x), u.y),
- lerp(lerp(e, f, u.x), lerp(g, h, u.x), u.y), u.z);
-}
-
-float fbm(float3 x, int octaves)
-{
- float v = 0.0;
- float a = 0.5;
- float f = 1.0;
- float3 shift = float3(100, 200, 300);
-
- for (int i = 0; i < octaves; ++i)
- {
- v += a * noise(x * f);
- x = x * 2.0 + shift;
- a *= 0.5;
- f *= 2.0;
- }
- return v;
-}
-
-float GetCloudDensity(float3 pos)
-{
- float r_cyl = length(float2(pos.x, pos.z));
- float r_norm = (r_cyl - disk.disk_r1) / (disk.disk_r2 - disk.disk_r1);
-
- if (r_norm < 0.0 || r_norm > 1.0)
- return 0.0;
-
- float h_norm = abs(pos.y) / disk.thickness;
- float vertical_falloff = exp(-h_norm * h_norm * 3.0);
- float radial_density = 1.0 - r_norm * 0.5;
-
- float keplerian_speed = 1.0 / sqrt(r_norm + 0.1);
-
- float rotation_angle = sim.time * keplerian_speed * 0.5;
- float3 rotated_pos = float3(
- pos.x * cos(rotation_angle) - pos.z * sin(rotation_angle),
- pos.y,
- pos.x * sin(rotation_angle) + pos.z * cos(rotation_angle)
- ) * 1e-10;
-
- float large_turbulence = fbm(rotated_pos * 1.2, 5);
- float medium_wisps = fbm(rotated_pos * 2.5, 4);
- float small_detail = fbm(rotated_pos * 6.0, 3);
- float fine_detail = fbm(rotated_pos * 10.0, 2);
-
- float noise_mask = large_turbulence * 0.4 +
- medium_wisps * 0.3 +
- small_detail * 0.2 +
- fine_detail * 0.1;
-
- noise_mask = smoothstep(0.25, 0.75, noise_mask);
-
- float angle = atan2(pos.z, pos.x);
- float rotated_angle = angle + sim.time * 0.5;
-
- float spiral_arms = sin(rotated_angle * 3.0 + r_norm * 15.0) * 0.15 + 0.85;
-
- float orbital_angle = angle + sim.time * keplerian_speed * 0.8;
- float orbital_pattern = sin(orbital_angle * 2.0 + r_norm * 8.0) * 0.2 + 0.8;
-
- float density = vertical_falloff * radial_density * noise_mask * spiral_arms * orbital_pattern;
- return density * disk.disk_density;
-}
-
-struct Ray
-{
- float x, y, z;
- float r, theta, phi;
- float dr, dtheta, dphi;
- float E, L;
-};
-
-Ray InitRay(float3 pos, float3 dir)
-{
- Ray ray;
- ray.x = pos.x;
- ray.y = pos.y;
- ray.z = pos.z;
- ray.r = length(pos);
- ray.theta = acos(pos.z / ray.r);
- ray.phi = atan2(pos.y, pos.x);
-
- float dx = dir.x;
- float dy = dir.y;
- float dz = dir.z;
-
- ray.dr = sin(ray.theta)*cos(ray.phi)*dx +
- sin(ray.theta)*sin(ray.phi)*dy +
- cos(ray.theta)*dz;
-
- ray.dtheta = (cos(ray.theta)*cos(ray.phi)*dx +
- cos(ray.theta)*sin(ray.phi)*dy -
- sin(ray.theta)*dz) / ray.r;
-
- ray.dphi = (-sin(ray.phi)*dx + cos(ray.phi)*dy) /
- (ray.r * sin(ray.theta));
-
- ray.L = ray.r * ray.r * sin(ray.theta) * ray.dphi;
- float f = 1.0 - SagA_rs / ray.r;
- float dt_dL = sqrt((ray.dr*ray.dr)/f +
- ray.r*ray.r*(ray.dtheta*ray.dtheta +
- sin(ray.theta)*sin(ray.theta)*
- ray.dphi*ray.dphi));
- ray.E = f * dt_dL;
-
- return ray;
-}
-
-bool Intercept(Ray ray, float rs)
-{
- return ray.r <= rs;
-}
-
-bool InterceptObject(Ray ray, inout Hit hit)
-{
- float3 P = float3(ray.x, ray.y, ray.z);
-
- for (int i = 0; i < obj.numObjects; ++i)
- {
- float3 center = obj.objPosRadius[i].xyz;
- float radius = obj.objPosRadius[i].w;
-
- float distSq = dot(P - center, P - center);
- if (distSq > radius * radius * 4.0)
- continue;
-
- if (distSq <= radius * radius)
- {
- hit.objectColor = obj.objColor[i];
- hit.hitCenter = center;
- hit.hitRadius = radius;
- return true;
- }
- }
-
- return false;
-}
-
-void GeodesicRHS(Ray ray, out float3 d1, out float3 d2)
-{
- float r = ray.r;
- float theta = ray.theta;
- float dr = ray.dr;
- float dtheta = ray.dtheta;
- float dphi = ray.dphi;
- float f = 1.0 - SagA_rs / r;
- float dt_dL = ray.E / f;
-
- d1 = float3(dr, dtheta, dphi);
- d2.x = - (SagA_rs / (2.0 * r*r)) * f * dt_dL * dt_dL
- + (SagA_rs / (2.0 * r*r * f)) * dr * dr
- + r * (dtheta*dtheta + sin(theta)*sin(theta)*dphi*dphi);
- d2.y = -2.0*dr*dtheta/r + sin(theta)*cos(theta)*dphi*dphi;
- d2.z = -2.0*dr*dphi/r - 2.0*cos(theta)/(sin(theta)) * dtheta * dphi;
-}
-
-void RK4Step(inout Ray ray, float dL)
-{
- float3 k1a, k1b;
- GeodesicRHS(ray, k1a, k1b);
-
- ray.r += dL * k1a.x;
- ray.theta += dL * k1a.y;
- ray.phi += dL * k1a.z;
- ray.dr += dL * k1b.x;
- ray.dtheta += dL * k1b.y;
- ray.dphi += dL * k1b.z;
-
- ray.x = ray.r * sin(ray.theta) * cos(ray.phi);
- ray.y = ray.r * sin(ray.theta) * sin(ray.phi);
- ray.z = ray.r * cos(ray.theta);
-}
-
-bool IsInDiskVolume(float3 pos)
-{
- float r_cyl = length(float2(pos.x, pos.z));
- return (r_cyl >= disk.disk_r1 && r_cyl <= disk.disk_r2 && abs(pos.y) <= disk.thickness);
-}
-
-float4 SampleDiskColor(float3 pos)
-{
- float r_cyl = length(float2(pos.x, pos.z));
- float r_norm = (r_cyl - disk.disk_r1) / (disk.disk_r2 - disk.disk_r1);
-
- float3 innerColor = float3(1.0, 0.9, 0.5);
- float3 midColor = float3(1.0, 0.6, 0.2);
- float3 outerColor = float3(0.9, 0.3, 0.1);
-
- float3 baseColor;
- if (r_norm < 0.5)
- baseColor = lerp(innerColor, midColor, r_norm * 2.0);
- else
- baseColor = lerp(midColor, outerColor, (r_norm - 0.5) * 2.0);
-
- float r_norm_rot = (r_cyl - disk.disk_r1) / (disk.disk_r2 - disk.disk_r1);
- float keplerian_speed = 1.0 / sqrt(r_norm_rot + 0.1);
-
- float color_rotation_angle = sim.time * keplerian_speed * 0.3;
- float3 rotated_color_pos = float3(
- pos.x * cos(color_rotation_angle) - pos.z * sin(color_rotation_angle),
- pos.y,
- pos.x * sin(color_rotation_angle) + pos.z * cos(color_rotation_angle)
- ) * 1e-10;
-
- float large_color = fbm(rotated_color_pos * 1.8, 4);
- float medium_color = fbm(rotated_color_pos * 4.0, 3);
- float small_color = fbm(rotated_color_pos * 8.0, 2);
- float colorVariation = (large_color * 0.5 + medium_color * 0.3 + small_color * 0.2) * 0.6;
- baseColor = baseColor * (1.0 + colorVariation);
-
- float density = GetCloudDensity(pos);
-
- float brightness_rotation_angle = sim.time * keplerian_speed * 0.7;
- float3 rotated_brightness_pos = float3(
- pos.x * cos(brightness_rotation_angle) - pos.z * sin(brightness_rotation_angle),
- pos.y,
- pos.x * sin(brightness_rotation_angle) + pos.z * cos(brightness_rotation_angle)
- ) * 1e-10;
-
- float brightness_large = fbm(rotated_brightness_pos * 3.0, 3);
- float brightness_medium = fbm(rotated_brightness_pos * 5.0, 2);
- float brightness_small = fbm(rotated_brightness_pos * 7.0, 2);
- float brightness_noise = (brightness_large * 0.6 + brightness_medium * 0.3 + brightness_small * 0.1);
-
- float baseBrightness = 1.0 + density * 1.5;
- float glowBrightness = brightness_noise * 0.8;
- float brightness = baseBrightness + glowBrightness;
-
- return float4(baseColor * brightness, density);
-}
-
-float CalculateAdaptiveStepSize(Ray ray, float baseStepSize)
-{
- float r_factor = clamp(ray.r / (SagA_rs * 10.0), 0.1, 1.0);
- float curvature = length(float3(ray.dr, ray.dtheta * ray.r, ray.dphi * ray.r * sin(ray.theta)));
- float curvature_factor = clamp(1e12 / (curvature + 1e6), 0.1, 2.0);
-
- return clamp(baseStepSize * r_factor * curvature_factor, MIN_STEP_SIZE, MAX_STEP_SIZE);
-}
-
-[shader("fragment")]
-float4 fragmentMain(VSOutput input) : SV_Target
-{
- float u = (2.0 * input.texCoord.x - 1.0) * cam.aspect * cam.tanHalfFov;
- float v = (1.0 - 2.0 * input.texCoord.y) * cam.tanHalfFov;
- float3 dir = normalize(u * cam.camRight - v * cam.camUp + cam.camForward);
- Ray ray = InitRay(cam.camPos, dir);
-
- float4 color = float4(0.0, 0.0, 0.0, 0.0);
-
- bool hitBlackHole = false;
- bool hitObject = false;
-
- Hit hit;
- hit.objectColor = float4(0.0, 0.0, 0.0, 0.0);
- hit.hitCenter = float3(0.0, 0.0, 0.0);
- hit.hitRadius = 0.0;
-
- float4 accumulatedColor = float4(0.0, 0.0, 0.0, 0.0);
- float transmittance = 1.0;
-
- int maxSteps = cam.moving ? sim.maxStepsMoving : sim.maxStepsStatic;
-
- if (maxSteps <= 0)
- maxSteps = cam.moving ? DEFAULT_MAX_STEPS_MOVING : DEFAULT_MAX_STEPS_STATIC;
-
- float cameraDistance = length(cam.camPos);
- if (cameraDistance > 2e12)
- maxSteps = maxSteps / 2;
- else if (cameraDistance > 1e12)
- maxSteps = int(maxSteps * 0.75);
-
- float initialEscapeVelocity = sqrt(2.0 * SagA_rs / ray.r);
- if (ray.dr > initialEscapeVelocity * 0.95 &&
- ray.r > SagA_rs * 200.0)
- maxSteps = maxSteps / 2;
-
- float lambda = 0.0;
- int objectCheckInterval = 5;
-
- for (int i = 0; i < maxSteps; ++i)
- {
- float exitDistance = sim.earlyExitDistance > 0.0 ? sim.earlyExitDistance : DEFAULT_EARLY_EXIT_DISTANCE;
- if (ray.r > exitDistance)
- break;
- if (ray.r > ESCAPE_R)
- break;
-
- if (Intercept(ray, SagA_rs))
- {
- hitBlackHole = true;
- break;
- }
-
- float currentStepSize = CalculateAdaptiveStepSize(ray, D_LAMBDA);
-
- RK4Step(ray, currentStepSize);
- lambda += currentStepSize;
-
- float3 newPos = float3(ray.x, ray.y, ray.z);
-
- if (IsInDiskVolume(newPos))
- {
- float4 diskSample = SampleDiskColor(newPos);
- float density = diskSample.a;
- float3 diskColor = diskSample.rgb;
-
- float stepLength = currentStepSize * 1e-8;
-
- float absorption = density * stepLength * 0.8;
- float scattering = density * stepLength * 1.5;
- float extinction = absorption + scattering;
-
- float stepTransmittance = exp(-extinction);
-
- float3 emission = diskColor * density * stepLength * 4.0 * sqrt(disk.disk_density);
-
- float3 glowColor = lerp(diskColor, float3(1.0, 0.8, 0.6), 0.3);
- float glowIntensity = density * stepLength * 2.0;
- float3 atmosphericGlow = glowColor * glowIntensity * 0.8;
-
- float3 totalEmission = emission + atmosphericGlow;
- accumulatedColor.rgb += totalEmission * transmittance;
-
- transmittance *= stepTransmittance;
-
- if (transmittance < 0.01)
- {
- accumulatedColor.a = 1.0 - transmittance;
- break;
- }
- }
-
- if (i % objectCheckInterval == 0 && InterceptObject(ray, hit))
- {
- hitObject = true;
- break;
- }
-
- if (ray.dr > 0.0 && ray.r > SagA_rs * 100.0 && lambda > 2e8)
- break;
- }
-
- accumulatedColor.a = 1.0 - transmittance;
-
- if (hitBlackHole)
- {
- color = float4(0.0, 0.0, 0.0, 1.0);
- }
- else if (hitObject)
- {
- float3 P = float3(ray.x, ray.y, ray.z);
- float3 N = normalize(P - hit.hitCenter);
- float3 V = normalize(cam.camPos - P);
-
- float ambient = 0.1;
- float diff = max(dot(N, V), 0.0);
- float intensity = ambient + (1.0 - ambient) * diff;
- float3 shaded = hit.objectColor.rgb * intensity;
-
- color = float4(shaded, hit.objectColor.a);
- color = lerp(accumulatedColor, color, color.a);
- }
- else
- {
- float3 rayDirection = normalize(float3(ray.x, ray.y, ray.z) - cam.camPos);
- float3 hdriColor = SampleHDRI(rayDirection);
- color = float4(lerp(accumulatedColor.rgb, hdriColor, 1.0 - accumulatedColor.a), 1.0);
- }
-
- return color;
-}
diff --git a/Assets/Shaders/Grid.slang b/Assets/Shaders/Grid.slang
deleted file mode 100644
index ea7d263..0000000
--- a/Assets/Shaders/Grid.slang
+++ /dev/null
@@ -1,34 +0,0 @@
-uniform float4x4 u_ViewProjection;
-uniform float4x4 u_Transform;
-uniform float u_GridSize;
-
-struct VSInput { float3 position : POSITION; };
-struct VSOutput { float4 position : SV_Position; };
-
-[shader("vertex")]
-VSOutput vertexMain(VSInput input)
-{
- VSOutput output;
- float3 scaledPosition = input.position * (u_GridSize / 50.0);
- output.position = mul(u_ViewProjection, mul(u_Transform, float4(scaledPosition, 1.0)));
- return output;
-}
-
-uniform float3 u_GridColor;
-uniform float u_GridAlpha;
-uniform float3 u_CameraPos;
-
-[shader("fragment")]
-float4 fragmentMain(VSOutput input) : SV_Target
-{
- float dist = length(u_CameraPos);
- float fadeFactor = 1.0 - clamp(dist / 100.0, 0.0, 0.8);
-
- float3 color = u_GridColor;
- float alpha = u_GridAlpha * fadeFactor;
-
- float gridFade = 1.0 - clamp(dist / 50.0, 0.0, 0.9);
- alpha *= gridFade;
-
- return float4(color, alpha);
-}
diff --git a/Assets/Shaders/Skybox.slang b/Assets/Shaders/Skybox.slang
deleted file mode 100644
index 6ba81bc..0000000
--- a/Assets/Shaders/Skybox.slang
+++ /dev/null
@@ -1,23 +0,0 @@
-uniform float4x4 u_Projection;
-uniform float4x4 u_View;
-
-struct VSInput { float3 position : POSITION; };
-struct VSOutput { float4 position : SV_Position; float3 texCoords : TEXCOORD0; };
-
-[shader("vertex")]
-VSOutput vertexMain(VSInput input)
-{
- VSOutput output;
- output.texCoords = input.position;
- float4 pos = mul(u_Projection, mul(u_View, float4(input.position, 1.0)));
- output.position = pos.xyww; // force depth = 1 so the skybox stays behind everything
- return output;
-}
-
-SamplerCube u_Skybox;
-
-[shader("fragment")]
-float4 fragmentMain(VSOutput input) : SV_Target
-{
- return u_Skybox.Sample(input.texCoords);
-}
diff --git a/Assets/Shaders/Sphere.slang b/Assets/Shaders/Sphere.slang
deleted file mode 100644
index 0871438..0000000
--- a/Assets/Shaders/Sphere.slang
+++ /dev/null
@@ -1,67 +0,0 @@
-uniform float4x4 u_ViewProjection;
-uniform float4x4 u_Transform;
-
-struct VSInput
-{
- float3 position : POSITION;
- float3 normal : NORMAL;
-};
-
-struct VSOutput
-{
- float4 position : SV_Position;
- float3 normal : TEXCOORD0;
- float3 worldPos : TEXCOORD1;
-};
-
-[shader("vertex")]
-VSOutput vertexMain(VSInput input)
-{
- VSOutput output;
- output.worldPos = mul(u_Transform, float4(input.position, 1.0)).xyz;
- float3x3 normalMatrix = (float3x3)u_Transform;
- output.normal = mul(normalMatrix, input.normal);
- output.position = mul(u_ViewProjection, float4(output.worldPos, 1.0));
- return output;
-}
-
-uniform float3 u_Color;
-uniform float u_Specular;
-uniform float u_Emission;
-uniform float3 u_LightPos;
-uniform float3 u_CameraPos;
-uniform int u_IsSelected;
-uniform float3 u_OutlineColor;
-uniform float u_OutlineWidth;
-SamplerCube u_HDRIEnvironment;
-
-[shader("fragment")]
-float4 fragmentMain(VSOutput input) : SV_Target
-{
- float3 normal = normalize(input.normal);
- float3 lightDir = normalize(u_LightPos - input.worldPos);
- float3 viewDir = normalize(u_CameraPos - input.worldPos);
- float3 reflectDir = reflect(-lightDir, normal);
-
- float3 hdriLight = u_HDRIEnvironment.Sample(normal).rgb;
- float hdriIntensity = 0.3;
-
- float diff = max(dot(normal, lightDir), 0.0);
- float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32.0);
-
- float3 diffuse = u_Color * (diff + hdriIntensity * hdriLight);
- float3 specular = float3(u_Specular, u_Specular, u_Specular) * spec;
- float3 emission = u_Color * u_Emission;
-
- float3 result = diffuse + specular + emission;
-
- if (u_IsSelected > 0)
- {
- float ndotv = max(dot(normal, viewDir), 0.0);
- float rim = 1.0 - ndotv;
- float outlineMask = step(1.0 - u_OutlineWidth, rim);
- result = lerp(result, u_OutlineColor, outlineMask);
- }
-
- return float4(result, 1.0);
-}
diff --git a/Assets/Shaders/TexturedQuad.slang b/Assets/Shaders/TexturedQuad.slang
deleted file mode 100644
index 52d46ed..0000000
--- a/Assets/Shaders/TexturedQuad.slang
+++ /dev/null
@@ -1,28 +0,0 @@
-struct VSInput
-{
- float2 position : POSITION;
- float2 texCoord : TEXCOORD0;
-};
-
-struct VSOutput
-{
- float4 position : SV_Position;
- float2 texCoord : TEXCOORD0;
-};
-
-[shader("vertex")]
-VSOutput vertexMain(VSInput input)
-{
- VSOutput output;
- output.position = float4(input.position, 0.0, 1.0);
- output.texCoord = input.texCoord;
- return output;
-}
-
-Sampler2D u_ScreenTexture;
-
-[shader("fragment")]
-float4 fragmentMain(VSOutput input) : SV_Target
-{
- return u_ScreenTexture.Sample(input.texCoord);
-}
diff --git a/Assets/Shaders/VkPipelineTest.slang b/Assets/Shaders/VkPipelineTest.slang
deleted file mode 100644
index f4d1897..0000000
--- a/Assets/Shaders/VkPipelineTest.slang
+++ /dev/null
@@ -1,25 +0,0 @@
-// Minimal shader used only to verify the Vulkan graphics-pipeline path (SPIR-V
-// module -> pipeline -> draw -> read-back). Draws a full-screen gradient
-// triangle from the vertex id, so it needs no vertex buffer, UBO, or sampler.
-
-struct VSOutput
-{
- float4 position : SV_Position;
- float3 color : COLOR0;
-};
-
-[shader("vertex")]
-VSOutput vertexMain(uint vid : SV_VertexID)
-{
- float2 p = float2(float((vid << 1) & 2), float(vid & 2));
- VSOutput output;
- output.position = float4(p * 2.0 - 1.0, 0.0, 1.0);
- output.color = float3(p, 0.5);
- return output;
-}
-
-[shader("fragment")]
-float4 fragmentMain(VSOutput input) : SV_Target
-{
- return float4(input.color, 1.0);
-}