aboutsummaryrefslogtreecommitdiff
path: root/assets
diff options
context:
space:
mode:
Diffstat (limited to 'assets')
-rw-r--r--assets/hdri/hdr_blue_nebulae_1.hdr (renamed from assets/hdri/HDR_blue_nebulae-1.hdr)bin62208386 -> 62208386 bytes
-rw-r--r--assets/hdri/hdr_subdued_blue_nebulae.hdr (renamed from assets/hdri/HDR_subdued_blue_nebulae.hdr)bin62041084 -> 62041084 bytes
-rw-r--r--assets/hdri/hdr_subdued_multi_nebulae.hdr (renamed from assets/hdri/HDR_subdued_multi_nebulae.hdr)bin64541302 -> 64541302 bytes
-rw-r--r--assets/shaders/Grid.slang34
-rw-r--r--assets/shaders/Sphere.slang67
-rw-r--r--assets/shaders/blur.slang (renamed from assets/shaders/Blur.slang)0
-rw-r--r--assets/shaders/equirect_to_cubemap.slang (renamed from assets/shaders/EquirectToCubemap.slang)0
-rw-r--r--assets/shaders/geodesic.slang (renamed from assets/shaders/Geodesic.slang)0
-rw-r--r--assets/shaders/grid.slang39
-rw-r--r--assets/shaders/skybox.slang (renamed from assets/shaders/Skybox.slang)12
-rw-r--r--assets/shaders/sphere.slang74
-rw-r--r--assets/shaders/textured_quad.slang (renamed from assets/shaders/TexturedQuad.slang)0
-rw-r--r--assets/shaders/vk_pipeline_test.slang (renamed from assets/shaders/VkPipelineTest.slang)0
13 files changed, 122 insertions, 104 deletions
diff --git a/assets/hdri/HDR_blue_nebulae-1.hdr b/assets/hdri/hdr_blue_nebulae_1.hdr
index f34b25d..f34b25d 100644
--- a/assets/hdri/HDR_blue_nebulae-1.hdr
+++ b/assets/hdri/hdr_blue_nebulae_1.hdr
Binary files differ
diff --git a/assets/hdri/HDR_subdued_blue_nebulae.hdr b/assets/hdri/hdr_subdued_blue_nebulae.hdr
index ea34298..ea34298 100644
--- a/assets/hdri/HDR_subdued_blue_nebulae.hdr
+++ b/assets/hdri/hdr_subdued_blue_nebulae.hdr
Binary files differ
diff --git a/assets/hdri/HDR_subdued_multi_nebulae.hdr b/assets/hdri/hdr_subdued_multi_nebulae.hdr
index da88396..da88396 100644
--- a/assets/hdri/HDR_subdued_multi_nebulae.hdr
+++ b/assets/hdri/hdr_subdued_multi_nebulae.hdr
Binary files differ
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/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/Blur.slang b/assets/shaders/blur.slang
index 17e4eae..17e4eae 100644
--- a/assets/shaders/Blur.slang
+++ b/assets/shaders/blur.slang
diff --git a/assets/shaders/EquirectToCubemap.slang b/assets/shaders/equirect_to_cubemap.slang
index 9b2ea4b..9b2ea4b 100644
--- a/assets/shaders/EquirectToCubemap.slang
+++ b/assets/shaders/equirect_to_cubemap.slang
diff --git a/assets/shaders/Geodesic.slang b/assets/shaders/geodesic.slang
index 7acbd78..7acbd78 100644
--- a/assets/shaders/Geodesic.slang
+++ b/assets/shaders/geodesic.slang
diff --git a/assets/shaders/grid.slang b/assets/shaders/grid.slang
new file mode 100644
index 0000000..f549cb1
--- /dev/null
+++ b/assets/shaders/grid.slang
@@ -0,0 +1,39 @@
+// Reference grid on the XZ plane. Uniforms live in a ConstantBuffer (UBO) so both
+// backends drive it through the same RHI path (bind a uniform buffer at binding 0).
+struct GridU
+{
+ float4x4 u_ViewProjection;
+ float4x4 u_Transform;
+ float u_GridSize;
+ float3 u_GridColor;
+ float u_GridAlpha;
+ float3 u_CameraPos;
+};
+ConstantBuffer<GridU> gu;
+
+struct VSInput { float3 position : POSITION; };
+struct VSOutput { float4 position : SV_Position; };
+
+[shader("vertex")]
+VSOutput vertexMain(VSInput input)
+{
+ VSOutput output;
+ float3 scaledPosition = input.position * (gu.u_GridSize / 50.0);
+ output.position = mul(gu.u_ViewProjection, mul(gu.u_Transform, float4(scaledPosition, 1.0)));
+ return output;
+}
+
+[shader("fragment")]
+float4 fragmentMain(VSOutput input) : SV_Target
+{
+ float dist = length(gu.u_CameraPos);
+ float fadeFactor = 1.0 - clamp(dist / 100.0, 0.0, 0.8);
+
+ float3 color = gu.u_GridColor;
+ float alpha = gu.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
index 6ba81bc..6447bea 100644
--- a/assets/shaders/Skybox.slang
+++ b/assets/shaders/skybox.slang
@@ -1,5 +1,11 @@
-uniform float4x4 u_Projection;
-uniform float4x4 u_View;
+// Fullscreen skybox cube. View/projection in a ConstantBuffer (UBO, binding 0)
+// so both backends drive it through the RHI; the cubemap is a sampler at binding 1.
+struct SkyboxU
+{
+ float4x4 u_Projection;
+ float4x4 u_View;
+};
+ConstantBuffer<SkyboxU> sb;
struct VSInput { float3 position : POSITION; };
struct VSOutput { float4 position : SV_Position; float3 texCoords : TEXCOORD0; };
@@ -9,7 +15,7 @@ VSOutput vertexMain(VSInput input)
{
VSOutput output;
output.texCoords = input.position;
- float4 pos = mul(u_Projection, mul(u_View, float4(input.position, 1.0)));
+ float4 pos = mul(sb.u_Projection, mul(sb.u_View, float4(input.position, 1.0)));
output.position = pos.xyww; // force depth = 1 so the skybox stays behind everything
return output;
}
diff --git a/assets/shaders/sphere.slang b/assets/shaders/sphere.slang
new file mode 100644
index 0000000..e37700d
--- /dev/null
+++ b/assets/shaders/sphere.slang
@@ -0,0 +1,74 @@
+// Lit sphere (Blinn-Phong + HDRI ambient + selection rim). Uniforms in a
+// ConstantBuffer (UBO, binding 0) so both backends drive it through the RHI;
+// the environment cubemap is a separate sampler at binding 1.
+struct SphereU
+{
+ float4x4 u_ViewProjection;
+ float4x4 u_Transform;
+ float3 u_Color;
+ float u_Specular;
+ float u_Emission;
+ float3 u_LightPos;
+ float3 u_CameraPos;
+ int u_IsSelected;
+ float3 u_OutlineColor;
+ float u_OutlineWidth;
+};
+ConstantBuffer<SphereU> su;
+
+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(su.u_Transform, float4(input.position, 1.0)).xyz;
+ float3x3 normalMatrix = (float3x3)su.u_Transform;
+ output.normal = mul(normalMatrix, input.normal);
+ output.position = mul(su.u_ViewProjection, float4(output.worldPos, 1.0));
+ return output;
+}
+
+SamplerCube u_HDRIEnvironment;
+
+[shader("fragment")]
+float4 fragmentMain(VSOutput input) : SV_Target
+{
+ float3 normal = normalize(input.normal);
+ float3 lightDir = normalize(su.u_LightPos - input.worldPos);
+ float3 viewDir = normalize(su.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 = su.u_Color * (diff + hdriIntensity * hdriLight);
+ float3 specular = float3(su.u_Specular, su.u_Specular, su.u_Specular) * spec;
+ float3 emission = su.u_Color * su.u_Emission;
+
+ float3 result = diffuse + specular + emission;
+
+ if (su.u_IsSelected > 0)
+ {
+ float ndotv = max(dot(normal, viewDir), 0.0);
+ float rim = 1.0 - ndotv;
+ float outlineMask = step(1.0 - su.u_OutlineWidth, rim);
+ result = lerp(result, su.u_OutlineColor, outlineMask);
+ }
+
+ return float4(result, 1.0);
+}
diff --git a/assets/shaders/TexturedQuad.slang b/assets/shaders/textured_quad.slang
index 52d46ed..52d46ed 100644
--- a/assets/shaders/TexturedQuad.slang
+++ b/assets/shaders/textured_quad.slang
diff --git a/assets/shaders/VkPipelineTest.slang b/assets/shaders/vk_pipeline_test.slang
index f4d1897..f4d1897 100644
--- a/assets/shaders/VkPipelineTest.slang
+++ b/assets/shaders/vk_pipeline_test.slang