diff --git a/armorpaint/shaders/layer_merge.kong b/armorpaint/shaders/layer_merge.kong index 60fb3aeb..15a33a40 100644 --- a/armorpaint/shaders/layer_merge.kong +++ b/armorpaint/shaders/layer_merge.kong @@ -61,7 +61,7 @@ fun layer_merge_frag(input: vert_out): float4 { if (constants.blending == 101) { // Merging _nor and _pack var col1: float4 = sample_lod(tex1, sampler_linear, input.tex, 0.0); - return float4(lerp4(cola, col1, str)); + return lerp4(cola, col1, str); } if (constants.blending == 102) { // Merging _nor with normal blending var col1: float4 = sample_lod(tex1, sampler_linear, input.tex, 0.0); @@ -237,7 +237,7 @@ fun layer_merge_frag(input: vert_out): float4 { */ - return float4(1, 1, 1, 1); + return float4(1.0, 1.0, 1.0, 1.0); } #[pipe] diff --git a/armorpaint/shaders/mask_colorid.kong b/armorpaint/shaders/mask_colorid.kong index 1f2bfc52..2668fe33 100644 --- a/armorpaint/shaders/mask_colorid.kong +++ b/armorpaint/shaders/mask_colorid.kong @@ -33,7 +33,7 @@ fun mask_colorid_vert(input: vert_in): vert_out { } fun mask_colorid_frag(input: vert_out): float4 { - var coord: uint2 = uint2(0, 0); + var coord: uint2 = uint2(uint(0.0), uint(0.0)); var colorid_c1: float4 = texpaint_colorid[coord]; var colorid_c2: float4 = sample_lod(texcolorid, sampler_linear, input.tex, 0.0); if (colorid_c1.x != colorid_c2.x || colorid_c1.y != colorid_c2.y || colorid_c1.z != colorid_c2.z) { diff --git a/armorpaint/shaders/mask_merge.kong b/armorpaint/shaders/mask_merge.kong index 020b72bf..bae68760 100644 --- a/armorpaint/shaders/mask_merge.kong +++ b/armorpaint/shaders/mask_merge.kong @@ -63,12 +63,15 @@ fun mask_merge_frag(input: vert_out): float4 { } /*else*/ if (constants.blending == 8) { // Overlay // out_color = lerp(cola, cola < 0.5 ? 2.0 * cola * col0 : 1.0 - 2.0 * (1.0 - cola) * (1.0 - col0), str); - if (cola < 0.5) { + + //// + //if (cola < 0.5) { out_color = lerp(cola, 2.0 * cola * col0, str); - } - else { - out_color = lerp(cola, 1.0 - 2.0 * (1.0 - cola) * (1.0 - col0), str); - } + //} + //else { + // out_color = lerp(cola, 1.0 - 2.0 * (1.0 - cola) * (1.0 - col0), str); + //} + //// } /*else*/ if (constants.blending == 9) { // Soft Light out_color = ((1.0 - str) * cola + str * ((1.0 - cola) * col0 * cola + cola * (1.0 - (1.0 - col0) * (1.0 - cola)))); diff --git a/base/shaders/deferred_light.kong b/base/shaders/deferred_light.kong index c0f6cd9f..c0f0acad 100644 --- a/base/shaders/deferred_light.kong +++ b/base/shaders/deferred_light.kong @@ -143,16 +143,16 @@ fun sh_irradiance(nor: float3): float3 { var cl21: float3 = float3(constants.shirr5.y, constants.shirr5.z, constants.shirr5.w); var cl22: float3 = float3(constants.shirr6.x, constants.shirr6.y, constants.shirr6.z); return ( - c1 * cl22 * (nor.y * nor.y - (-nor.z) * (-nor.z)) + - c3 * cl20 * nor.x * nor.x + - c4 * cl00 - - c5 * cl20 + - 2.0 * c1 * cl2m2 * nor.y * (-nor.z) + - 2.0 * c1 * cl21 * nor.y * nor.x + - 2.0 * c1 * cl2m1 * (-nor.z) * nor.x + - 2.0 * c2 * cl11 * nor.y + - 2.0 * c2 * cl1m1 * (-nor.z) + - 2.0 * c2 * cl10 * nor.x + cl22 * c1 * (nor.y * nor.y - (-nor.z) * (-nor.z)) + + cl20 * c3 * nor.x * nor.x + + cl00 * c4 - + cl20 * c5 + + cl2m2 * 2.0 * c1 * nor.y * (-nor.z) + + cl21 * 2.0 * c1 * nor.y * nor.x + + cl2m1 * 2.0 * c1 * (-nor.z) * nor.x + + cl11 * 2.0 * c2 * nor.y + + cl1m1 * 2.0 * c2 * (-nor.z) + + cl10 * 2.0 * c2 * nor.x ); } @@ -208,7 +208,8 @@ fun deferred_light_frag(input: vert_out): float4 { n.z ) ); - envl /= PI; + // envl /= PI; + envl = envl / PI; var reflection_world: float3 = reflect(-v, n); var lod: float = mip_from_roughness(roughness, float(constants.envmap_num_mipmaps)); @@ -217,16 +218,20 @@ fun deferred_light_frag(input: vert_out): float4 { envl.rgb = envl.rgb * albedo; // Indirect specular // var env_brdf: float2 = senvmap_brdf[uint2(roughness * 256.0, (1.0 - dotnv) * 256.0)].xy; - var env_brdf: float4 = senvmap_brdf[uint2(roughness * 256.0, (1.0 - dotnv) * 256.0)]; - envl.rgb += prefiltered_color * (f0 * env_brdf.x + env_brdf.y) * 1.5; + var env_brdf: float4 = senvmap_brdf[uint2(uint(roughness * 256.0), uint((1.0 - dotnv) * 256.0))]; + + //envl.rgb += prefiltered_color * (f0 * env_brdf.x + env_brdf.y) * 1.5; + envl.rgb = envl.rgb + (prefiltered_color * (f0 * env_brdf.x + env_brdf.y) * 1.5); envl.rgb *= constants.envmap_data.w * occ; var color: float4; - color.rgb = envl; + color.rgb = envl.rgb; color.rgb = color.rgb * sample_lod(ssaotex, sampler_linear, input.tex, 0.0).r; - if (matid == uint(1)) { // Emission - color.rgb += g1.rgb; // materialid + // if (matid == uint(1)) { // Emission + if (matid == uint(1.0)) { // Emission + //color.rgb += g1.rgb; // materialid + color.rgb = color.rgb + g1.rgb; // materialid albedo = float3(0.0, 0.0, 0.0); } diff --git a/base/shaders/mesh_posnor.kong b/base/shaders/mesh_posnor.kong index d5071b68..ee935f6b 100644 --- a/base/shaders/mesh_posnor.kong +++ b/base/shaders/mesh_posnor.kong @@ -68,14 +68,16 @@ fun mesh_posnor_frag(input: vert_out): float4[2] { var metallic: float = 0.0; var occlusion: float = 1.0; var n: float3 = normalize(input.wnormal); - n /= abs(n.x) + abs(n.y) + abs(n.z); + // n /= abs(n.x) + abs(n.y) + abs(n.z); + n = n / (abs(n.x) + abs(n.y) + abs(n.z)); if (n.z >= 0.0) { n.xy = n.xy; } else { n.xy = octahedron_wrap(n.xy); } - var matid: uint = 0; + // var matid: uint = 0; + var matid: uint = uint(0.0); var color: float4[2]; color[0] = float4(n.xy, roughness, pack_f32_i16(metallic, matid)); color[1] = float4(basecol, occlusion); diff --git a/base/shaders/mesh_posnortex.kong b/base/shaders/mesh_posnortex.kong index f8178f30..12b299d8 100644 --- a/base/shaders/mesh_posnortex.kong +++ b/base/shaders/mesh_posnortex.kong @@ -73,7 +73,8 @@ fun mesh_posnortex_frag(input: vert_out): float4[2] { var metallic: float = 0.0; var occlusion: float = 1.0; - n /= abs(n.x) + abs(n.y) + abs(n.z); + // n /= abs(n.x) + abs(n.y) + abs(n.z); + n = (n / abs(n.x) + abs(n.y) + abs(n.z)); if (n.z >= 0.0) { n.xy = n.xy; } @@ -81,7 +82,8 @@ fun mesh_posnortex_frag(input: vert_out): float4[2] { n.xy = octahedron_wrap(n.xy); } - var matid: uint = 0; + // var matid: uint = 0; + var matid: uint = uint(0.0); var color: float4[2]; color[0] = float4(n.xy, roughness, pack_f32_i16(metallic, matid)); color[1] = float4(basecol, occlusion); diff --git a/base/shaders/prefilter_envmap.kong b/base/shaders/prefilter_envmap.kong index e35f8235..12333b1f 100644 --- a/base/shaders/prefilter_envmap.kong +++ b/base/shaders/prefilter_envmap.kong @@ -13,7 +13,7 @@ const radiance: tex2d; const PI: float = 3.14159265358979; const PI2: float = 6.28318530718; // #ifdef METAL -// const samples = 1024 * 2; // Prevent gpu hang +// const samples: float = 1024 * 2; // Prevent gpu hang // #else // const samples: float = 1024 * 16; const samples: float = 16384; @@ -61,18 +61,25 @@ fun cos_weighted_hemisphere_direction(n: float3, co: float2, seed: float): float var rx: float = ra * cos(PI2 * r.x); var ry: float = ra * sin(PI2 * r.x); var rz: float = sqrt(1.0 - r.y); - var rr: float3 = float3(rx * uu + ry * vv + rz * n); + var rr: float3 = rx * uu + ry * vv + rz * n; return normalize(rr); } fun prefilter_envmap_frag(input: vert_out): float4 { var color: float4 = float4(0.0, 0.0, 0.0, 1.0); var n: float3 = reverse_equirect(input.tex); - for (var i: uint = 0; i < samples; i += 1) { - var dir: float3 = normalize(lerp3(n, cos_weighted_hemisphere_direction(n, input.tex, i), constants.params.x)); - color.rgb += sample(radiance, sampler_linear, equirect(dir)).rgb; + + //for (var i: int = 0; i < int(samples); i += 1) { + var i: int = 0; + while (i < int(samples)) { + var dir: float3 = normalize(lerp3(n, cos_weighted_hemisphere_direction(n, input.tex, float(i)), constants.params.x)); + color.rgb = color.rgb + sample(radiance, sampler_linear, equirect(dir)).rgb; + + // + i += 1; + // } - color.rgb /= float(samples); + color.rgb = color.rgb / samples; // color.rgb = pow(color.rgb, float3(1.0 / 2.2, 1.0 / 2.2, 1.0 / 2.2)); color.r = pow(color.r, 1.0 / 2.2); color.g = pow(color.g, 1.0 / 2.2); diff --git a/base/shaders/ssao_blur_pass.kong b/base/shaders/ssao_blur_pass.kong index eae2de76..b8a1189c 100644 --- a/base/shaders/ssao_blur_pass.kong +++ b/base/shaders/ssao_blur_pass.kong @@ -82,7 +82,9 @@ fun ssao_blur_pass_frag(input: vert_out): float { var weight: float = 0.132572; var color: float = sample_lod(tex, sampler_linear, input.tex, 0.0).r * weight; - for (var i: int = 1; i < 8; i += 1) { + //for (var i: int = 1; i < 8; i += 1) { + var i: int = 1; + while (i < 8) { var blur_weight_i: float; // = blur_weights[i]; if (i == 1) { @@ -123,6 +125,10 @@ fun ssao_blur_pass_frag(input: vert_out): float { w = blur_weight_i * influence_factor; color += col * w; weight += w; + + // + i += 1; + // } color = color / weight; diff --git a/base/shaders/ssao_pass.kong b/base/shaders/ssao_pass.kong index 881551eb..e1b7ca38 100644 --- a/base/shaders/ssao_pass.kong +++ b/base/shaders/ssao_pass.kong @@ -68,7 +68,10 @@ fun ray_cast(view_ray: float3, dir: float3, vpos: float3): float { dir = dir * ray_step; var hit_coord: float3 = vpos; var dist: float = 0.15; - for (var i: int = 0; i < max_steps; i = i + 1) { + + // for (var i: int = 0; i < max_steps; i = i + 1) { + var i: int = 0; + while (i < max_steps) { hit_coord += dir; var delta: float = get_delta_depth(view_ray, hit_coord); if (delta > 0.0 && delta < 0.2) { @@ -76,6 +79,10 @@ fun ray_cast(view_ray: float3, dir: float3, vpos: float3): float { // break; return dist; } + + // + i += 1; + // } return dist; }