luboslenco vor 3 Monaten
Ursprung
Commit
badbadb800

+ 5 - 5
armorpaint/shaders/dilate_map.kong

@@ -1,4 +1,9 @@
 
+#[set(everything)]
+const constants: {
+	empty: float;
+};
+
 struct vert_in {
 	pos: float4;
 	nor: float2;
@@ -9,11 +14,6 @@ struct vert_out {
 	pos: float4;
 }
 
-#[set(everything)]
-const constants: {
-	empty: float;
-};
-
 fun dilate_map_vert(input: vert_in): vert_out {
 	var output: vert_out;
 	var tex_coord: float2 = float2(input.tex.x * 2.0 - 1.0, (1.0 - input.tex.y) * 2.0 - 1.0);

+ 18 - 2
armorpaint/shaders/dilate_pass.kong

@@ -65,13 +65,23 @@ fun dilate_pass_frag(input: vert_out): float4 {
 	// Based on https://shaderbits.com/blog/uv-dilation by Ryan Brucks
 	var texel_size: float2 = float2(1.0, 1.0) / constants.tex_size;
 	var min_dist: float = 10000000.0;
-	var coord: uint2 = uint2(input.tex * constants.tex_size);
-	var mask: float = texdilate[coord].r;
+	//var coord: uint2 = uint2(input.tex * constants.tex_size);
+	var coordf: float2 = float2(input.tex.x * constants.tex_size.x, input.tex.y * constants.tex_size.y);
+	var coord: uint2 = uint2(uint(coordf.x), uint(coordf.y));
+	//var mask: float = texdilate[coord].r;
+	var mask4: float4 = texdilate[coord];
+	var mask: float = mask4.r;
 	if (mask > 0.0) {
 		discard;
 	}
 
 	var color: float4 = tex[coord];
+
+
+
+
+	////
+	/*
 	var i: int = 0;
 	while (i < int(constants.dilate_radius)) {
 		i += 1;
@@ -100,6 +110,12 @@ fun dilate_pass_frag(input: vert_out): float4 {
 			j += 1;
 		}
 	}
+	*/
+	////
+
+
+
+
 
 	return color;
 }

+ 7 - 5
armorpaint/shaders/layer_merge.kong

@@ -132,6 +132,11 @@ fun layer_merge_frag(input: vert_out): float4 {
 			lerp3(cola.rgb, cola.rgb + col0.rgb, str),
 			max(col0.a, cola.a));
 	}
+
+	////
+
+	/* TODO: SPIRV
+
 	if (constants.blending == 8) { // Overlay
 		var rr: float;
 		if (cola.r < 0.5) {
@@ -170,11 +175,6 @@ fun layer_merge_frag(input: vert_out): float4 {
 			(cola.rgb + str * (float3(2.0, 2.0, 2.0) * (col0.rgb - float3(0.5, 0.5, 0.5)))),
 			max(col0.a, cola.a));
 	}
-
-
-
-	/* TODO: SPIRV
-
 	if (constants.blending == 11) {
 		return float4(
 			lerp3(cola.rgb, abs3(cola.rgb - col0.rgb), str),
@@ -237,6 +237,8 @@ fun layer_merge_frag(input: vert_out): float4 {
 
 	*/
 
+	////
+
 	return float4(1.0, 1.0, 1.0, 1.0);
 }
 

BIN
base/assets/Scene.arm


+ 1 - 1
base/shaders/ssao_blur_pass.kong

@@ -109,7 +109,7 @@ fun ssao_blur_pass_frag(input: vert_out): float {
 			blur_weight_i = 0.008934;
 		}
 
-		var posadd: float = i;
+		var posadd: float = float(i);
 
 		var nor2: float3 = get_nor(sample_lod(gbuffer0, sampler_linear, input.tex + posadd * constants.dir_inv, 0.0).rg);
 		var influence_factor: float = step(discard_threshold, dot(nor2, nor));

+ 3 - 3
base/shaders/ssao_pass.kong

@@ -71,7 +71,7 @@ fun ray_cast(view_ray: float3, dir: float3, vpos: float3): float {
 
 	// for (var i: int = 0; i < max_steps; i = i + 1) {
 	var i: int = 0;
-	while (i < max_steps) {
+	while (i < int(max_steps)) {
 		hit_coord += dir;
 		var delta: float = get_delta_depth(view_ray, hit_coord);
 		if (delta > 0.0 && delta < 0.2) {
@@ -88,8 +88,8 @@ fun ray_cast(view_ray: float3, dir: float3, vpos: float3): float {
 }
 
 fun tangent(n: float3): float3 {
-	var t1: float3 = cross(n, float3(0, 0, 1));
-	var t2: float3 = cross(n, float3(0, 1, 0));
+	var t1: float3 = cross(n, float3(0.0, 0.0, 1.0));
+	var t2: float3 = cross(n, float3(0.0, 1.0, 0.0));
 	if (length(t1) > length(t2)) {
 		return normalize(t1);
 	}