Ver Fonte

Vulkan fixes

luboslenco há 4 meses atrás
pai
commit
5122a42b1b

+ 6 - 2
armorpaint/shaders/layer_invert.kong

@@ -25,11 +25,15 @@ struct vert_out {
 
 fun layer_invert_vert(input: vert_in): vert_out {
 	var output: vert_out;
+
+	var cpos: float4 = constants.pos;
+	var ctex: float4 = constants.tex;
+
 	output.pos = float4(input.pos, 0.0, 1.0);
-	output.pos.xy = output.pos.xy * constants.pos.zw + constants.pos.xy;
+	output.pos.xy = output.pos.xy * cpos.zw + cpos.xy;
 	output.pos.xy = output.pos.xy * 2.0 - 1.0;
 	output.pos.y = -output.pos.y;
-	output.tex = input.pos * constants.tex.zw + constants.tex.xy;
+	output.tex = input.pos * ctex.zw + ctex.xy;
 	output.col = constants.col;
 	return output;
 }

+ 6 - 2
armorpaint/shaders/layer_view.kong

@@ -26,11 +26,15 @@ struct vert_out {
 
 fun layer_view_vert(input: vert_in): vert_out {
 	var output: vert_out;
+
+	var cpos: float4 = constants.pos;
+	var ctex: float4 = constants.tex;
+
 	output.pos = float4(input.pos, 0.0, 1.0);
-	output.pos.xy = output.pos.xy * constants.pos.zw + constants.pos.xy;
+	output.pos.xy = output.pos.xy * cpos.zw + cpos.xy;
 	output.pos.xy = output.pos.xy * 2.0 - 1.0;
 	output.pos.y = -output.pos.y;
-	output.tex = input.pos * constants.tex.zw + constants.tex.xy;
+	output.tex = input.pos * ctex.zw + ctex.xy;
 	output.col = constants.col;
 	return output;
 }

+ 3 - 3
base/shaders/bloom_downsample_pass.kong

@@ -32,7 +32,7 @@ fun bloom_downsample_pass_vert(input: vert_in): vert_out {
 	return output;
 }
 
-fun downsample_dual_filter(tex: tex2d, tex_coord: float2, texel_size: float2): float3 {
+fun downsample_dual_filter(tex_coord: float2, texel_size: float2): float3 {
 	var delta: float3 = float3(texel_size.xy, texel_size.x) * float3(0.5, 0.5, -0.5);
 
 	var result: float3;
@@ -47,14 +47,14 @@ fun downsample_dual_filter(tex: tex2d, tex_coord: float2, texel_size: float2): f
 
 fun bloom_downsample_pass_frag(input: vert_out): float4 {
 	var color: float4;
-	color.rgb = downsample_dual_filter(tex, input.tex, constants.screen_size_inv);
+	color.rgb = downsample_dual_filter(input.tex, constants.screen_size_inv);
 
 	if (constants.current_mip_level == 0) {
 		var brightness: float = max(color.r, max(color.g, color.b));
 
 		var softening_curve: float = brightness - bloom_threshold + bloom_knee;
 		softening_curve = clamp(softening_curve, 0.0, 2.0 * bloom_knee);
-		softening_curve = softening_curve * softening_curve / (4 * bloom_knee + epsilon);
+		softening_curve = softening_curve * softening_curve / (4.0 * bloom_knee + epsilon);
 
 		var contribution_factor: float = max(softening_curve, brightness - bloom_threshold);
 

+ 5 - 5
base/shaders/bloom_upsample_pass.kong

@@ -31,28 +31,28 @@ fun bloom_upsample_pass_vert(input: vert_in): vert_out {
 	return output;
 }
 
-fun upsample_dual_filter(tex: tex2d, tex_coord: float2, texel_size: float2): float3 {
+fun upsample_dual_filter(tex_coord: float2, texel_size: float2): float3 {
 	var delta: float2 = texel_size * constants.sample_scale;
 
 	var result: float3;
 	result  = sample_lod(tex, sampler_linear, tex_coord + float2(-delta.x * 2.0, 0.0), 0.0).rgb;
 	result += sample_lod(tex, sampler_linear, tex_coord + float2(-delta.x, delta.y),   0.0).rgb * 2.0;
 	result += sample_lod(tex, sampler_linear, tex_coord + float2(0.0, delta.y * 2.0),  0.0).rgb;
-	result += sample_lod(tex, sampler_linear, tex_coord + delta,                     0.0).rgb * 2.0;
+	result += sample_lod(tex, sampler_linear, tex_coord + delta,                       0.0).rgb * 2.0;
 	result += sample_lod(tex, sampler_linear, tex_coord + float2(delta.x * 2.0, 0.0),  0.0).rgb;
 	result += sample_lod(tex, sampler_linear, tex_coord + float2(delta.x, -delta.y),   0.0).rgb * 2.0;
 	result += sample_lod(tex, sampler_linear, tex_coord + float2(0.0, -delta.y * 2.0), 0.0).rgb;
-	result += sample_lod(tex, sampler_linear, tex_coord - delta,                     0.0).rgb * 2.0;
+	result += sample_lod(tex, sampler_linear, tex_coord - delta,                       0.0).rgb * 2.0;
 
 	return result * (1.0 / 12.0);
 }
 
 fun bloom_upsample_pass_frag(input: vert_out): float4 {
 	var color: float4;
-	color.rgb = upsample_dual_filter(tex, input.tex, constants.screen_size_inv);
+	color.rgb = upsample_dual_filter(input.tex, constants.screen_size_inv);
 
 	if (constants.current_mip_level == 0) {
-		color.rgb = color.rgb * bloom_strength;
+		color.rgb = color.rgb * float3(bloom_strength, bloom_strength, bloom_strength);
 	}
 
 	color.a = 1.0;

+ 5 - 5
base/shaders/compositor_pass.kong

@@ -38,7 +38,7 @@ fun tonemap_filmic(color: float3): float3 {
 	x.x = max(0.0, color.x - 0.004);
 	x.y = max(0.0, color.y - 0.004);
 	x.z = max(0.0, color.z - 0.004);
-	return (x * (6.2 * x + 0.5)) / (x * (6.2 * x + 1.7) + 0.06);
+	return (x * (x * 6.2 + 0.5)) / (x * (x * 6.2 + 1.7) + 0.06);
 }
 
 fun compositor_pass_frag(input: vert_out): float4 {
@@ -47,13 +47,13 @@ fun compositor_pass_frag(input: vert_out): float4 {
 	// Static grain
 	var x: float = (input.tex.x + 4.0) * (input.tex.y + 4.0) * 10.0;
 	var g: float = (((x % 13.0) + 1.0) * ((x % 123.0) + 1.0) % 0.01) - 0.005;
-	color.rgb += float3(g, g, g) * constants.grain_strength;
+	color.rgb = color.rgb + (float3(g, g, g) * constants.grain_strength);
 
-	color.rgb *= (1.0 - constants.vignette_strength) + constants.vignette_strength * pow(16.0 * input.tex.x * input.tex.y * (1.0 - input.tex.x) * (1.0 - input.tex.y), 0.2);
+	color.rgb = color.rgb * ((1.0 - constants.vignette_strength) + constants.vignette_strength * pow(16.0 * input.tex.x * input.tex.y * (1.0 - input.tex.x) * (1.0 - input.tex.y), 0.2));
 
 	// Auto exposure
-	// const float auto_exposure_strength = 1.0;
-	// float expo = 2.0 - clamp(length(sample_lod(histogram, sampler_linear, float2(0.5, 0.5), 0.0).rgb), 0.0, 1.0);
+	// const auto_exposure_strength: float = 1.0;
+	// var expo: float = 2.0 - clamp(length(sample_lod(histogram, sampler_linear, float2(0.5, 0.5), 0.0).rgb), 0.0, 1.0);
 	// color.rgb *= pow(expo, auto_exposure_strength * 2.0);
 
 	color.rgb = tonemap_filmic(color.rgb); // With gamma

+ 1 - 1
base/shaders/deferred_light.kong

@@ -60,7 +60,7 @@ fun deferred_light_vert(input: vert_in): vert_out {
 	var v: float4 = float4(input.pos.xy, 1.0, 1.0);
 	v = constants.invVP * v;
 	v.xyz /= v.w;
-	output.view_ray = float3(v.xyz - constants.eye);
+	output.view_ray = v.xyz - constants.eye;
 
 	return output;
 }

+ 6 - 2
base/shaders/draw/draw_image.kong

@@ -25,11 +25,15 @@ struct vert_out {
 
 fun draw_image_vert(input: vert_in): vert_out {
 	var output: vert_out;
+
+	var cpos: float4 = constants.pos;
+	var ctex: float4 = constants.tex;
+
 	output.pos = float4(input.pos, 0.0, 1.0);
-	output.pos.xy = output.pos.xy * constants.pos.zw + constants.pos.xy;
+	output.pos.xy = output.pos.xy * cpos.zw + cpos.xy;
 	output.pos.xy = output.pos.xy * 2.0 - 1.0;
 	output.pos.y = -output.pos.y;
-	output.tex = input.pos * constants.tex.zw + constants.tex.xy;
+	output.tex = input.pos * ctex.zw + ctex.xy;
 	output.col = constants.col;
 	return output;
 }

+ 4 - 1
base/shaders/draw/draw_rect.kong

@@ -17,8 +17,11 @@ struct vert_out {
 
 fun draw_rect_vert(input: vert_in): vert_out {
 	var output: vert_out;
+
+	var cpos: float4 = constants.pos;
+
 	output.pos = float4(input.pos, 0.0, 1.0);
-	output.pos.xy = output.pos.xy * constants.pos.zw + constants.pos.xy;
+	output.pos.xy = output.pos.xy * cpos.zw + cpos.xy;
 	output.pos.xy = output.pos.xy * 2.0 - 1.0;
 	output.pos.y = -output.pos.y;
 	output.col = constants.col;

+ 6 - 2
base/shaders/draw/draw_text.kong

@@ -25,11 +25,15 @@ struct vert_out {
 
 fun draw_text_vert(input: vert_in): vert_out {
 	var output: vert_out;
+
+	var cpos: float4 = constants.pos;
+	var ctex: float4 = constants.tex;
+
 	output.pos = float4(input.pos, 0.0, 1.0);
-	output.pos.xy = output.pos.xy * constants.pos.zw + constants.pos.xy;
+	output.pos.xy = output.pos.xy * cpos.zw + cpos.xy;
 	output.pos.xy = output.pos.xy * 2.0 - 1.0;
 	output.pos.y = -output.pos.y;
-	output.tex = input.pos * constants.tex.zw + constants.tex.xy;
+	output.tex = input.pos * ctex.zw + ctex.xy;
 	output.col = constants.col;
 	return output;
 }

+ 6 - 2
base/shaders/layer_copy.kong

@@ -25,11 +25,15 @@ struct vert_out {
 
 fun layer_copy_vert(input: vert_in): vert_out {
 	var output: vert_out;
+
+	var cpos: float4 = constants.pos;
+	var ctex: float4 = constants.tex;
+
 	output.pos = float4(input.pos, 0.0, 1.0);
-	output.pos.xy = output.pos.xy * constants.pos.zw + constants.pos.xy;
+	output.pos.xy = output.pos.xy * cpos.zw + cpos.xy;
 	output.pos.xy = output.pos.xy * 2.0 - 1.0;
 	output.pos.y = -output.pos.y;
-	output.tex = input.pos * constants.tex.zw + constants.tex.xy;
+	output.tex = input.pos * ctex.zw + ctex.xy;
 	output.col = constants.col;
 	return output;
 }

+ 6 - 2
base/shaders/layer_copy_bgra.kong

@@ -25,11 +25,15 @@ struct vert_out {
 
 fun layer_copy_bgra_vert(input: vert_in): vert_out {
 	var output: vert_out;
+
+	var cpos: float4 = constants.pos;
+	var ctex: float4 = constants.tex;
+
 	output.pos = float4(input.pos, 0.0, 1.0);
-	output.pos.xy = output.pos.xy * constants.pos.zw + constants.pos.xy;
+	output.pos.xy = output.pos.xy * cpos.zw + cpos.xy;
 	output.pos.xy = output.pos.xy * 2.0 - 1.0;
 	output.pos.y = -output.pos.y;
-	output.tex = input.pos * constants.tex.zw + constants.tex.xy;
+	output.tex = input.pos * ctex.zw + ctex.xy;
 	output.col = constants.col;
 	return output;
 }