Fix gbuffer pack
This commit is contained in:
@@ -266,8 +266,8 @@ 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(uint(roughness * 256.0), uint((1.0 - dotnv) * 256.0))];
|
||||
// var env_brdf: float2 = senvmap_brdf[uint2(roughness * 255.0, (1.0 - dotnv) * 255.0)].xy;
|
||||
var env_brdf: float4 = senvmap_brdf[uint2(uint(roughness * 255.0), uint((1.0 - dotnv) * 255.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);
|
||||
|
||||
@@ -59,7 +59,7 @@ fun pack_f32_i16(f: float, i: uint): float {
|
||||
// const t1: float = ((prec / maxi) - 1.0) / prec_minus_one;
|
||||
// const t2: float = (prec / maxi) / prec_minus_one;
|
||||
// return t1 * f + t2 * float(i);
|
||||
return 0.062504762 * f + 0.062519999 * float(i);
|
||||
return 0.062504762 * min(f, 0.9999) + 0.062519999 * float(i);
|
||||
}
|
||||
|
||||
fun mesh_posnor_frag(input: vert_out): float4[3] {
|
||||
|
||||
@@ -63,7 +63,7 @@ fun pack_f32_i16(f: float, i: uint): float {
|
||||
// const t1: float = ((prec / maxi) - 1.0) / prec_minus_one;
|
||||
// const t2: float = (prec / maxi) / prec_minus_one;
|
||||
// return t1 * f + t2 * float(i);
|
||||
return 0.062504762 * f + 0.062519999 * float(i);
|
||||
return 0.062504762 * min(f, 0.9999) + 0.062519999 * float(i);
|
||||
}
|
||||
|
||||
fun mesh_posnortex_frag(input: vert_out): float4[3] {
|
||||
|
||||
@@ -388,8 +388,8 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
|
||||
node_shader_write_frag(kong, "var f0: float3 = lerp3(float3(0.04, 0.04, 0.04), basecol, metallic);");
|
||||
kong.frag_vvec = true;
|
||||
node_shader_write_frag(kong, "var dotnv: float = max(0.0, dot(n, vvec));");
|
||||
// node_shader_write_frag(kong, "var env_brdf: float2 = senvmap_brdf[uint2(float2(roughness, 1.0 - dotnv) * 256.0)].xy;");
|
||||
node_shader_write_frag(kong, "var brdf_coord: float2 = float2(roughness, 1.0 - dotnv) * 256.0;");
|
||||
// node_shader_write_frag(kong, "var env_brdf: float2 = senvmap_brdf[uint2(float2(roughness, 1.0 - dotnv) * 255.0)].xy;");
|
||||
node_shader_write_frag(kong, "var brdf_coord: float2 = float2(roughness, 1.0 - dotnv) * 255.0;");
|
||||
node_shader_write_frag(kong, "var env_brdf: float4 = senvmap_brdf[uint2(uint(brdf_coord.x), uint(brdf_coord.y))];");
|
||||
// node_shader_add_constant(kong, "envmap_num_mipmaps: int", "_envmap_num_mipmaps");
|
||||
node_shader_add_constant(kong, "envmap_data: float4", "_envmap_data"); // angle, sin(angle), cos(angle), strength
|
||||
|
||||
@@ -284,7 +284,7 @@ fun octahedron_wrap(v: float2): float2 { \
|
||||
|
||||
let str_pack_float_int16: string = "\
|
||||
fun pack_f32_i16(f: float, i: uint): float { \
|
||||
return 0.062504762 * f + 0.062519999 * float(i); \
|
||||
return 0.062504762 * min(f, 0.9999) + 0.062519999 * float(i); \
|
||||
} \
|
||||
";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user