[Log] User Agent – "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15" (bevy-atari-antic, line 11) [Log] Vendor – "Apple Inc." (bevy-atari-antic, line 11) [Log] Renderer – "Apple GPU" (bevy-atari-antic, line 11) [Log] INFO Vendor: Apple Inc. log.target = "wgpu_hal::gles::adapter"; (atari_antic.js, line 377) log.module_path = "wgpu_hal::gles::adapter"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/adapter.rs"; log.line = 185; [Log] INFO Renderer: Apple GPU log.target = "wgpu_hal::gles::adapter"; (atari_antic.js, line 377) log.module_path = "wgpu_hal::gles::adapter"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/adapter.rs"; log.line = 186; [Log] INFO Version: WebGL 2.0 log.target = "wgpu_hal::gles::adapter"; (atari_antic.js, line 377) log.module_path = "wgpu_hal::gles::adapter"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/adapter.rs"; log.line = 187; [Log] INFO SL version: WebGL GLSL ES 3.00 log.target = "wgpu_hal::gles::adapter"; (atari_antic.js, line 377) log.module_path = "wgpu_hal::gles::adapter"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/adapter.rs"; log.line = 196; [Log] INFO Adapter GL AdapterInfo { name: "Apple GPU", vendor: 0, device: 0, device_type: DiscreteGpu, backend: Gl } log.target = "wgpu_core::instance"; (atari_antic.js, line 377) log.module_path = "wgpu_core::instance"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/instance.rs"; log.line = 682; [Log] INFO Compiled shader Vertex #version 300 es (atari_antic.js, line 377) precision highp float; precision highp int; struct Vertex { vec3 position; vec3 normal; vec2 uv; }; struct VertexOutput { vec4 clip_position; vec4 world_position; vec3 world_normal; vec2 uv; }; struct PointLight { mat4x4 projection; vec4 color; vec3 position; float inverse_square_range; float radius; float near; float far; float shadow_depth_bias; float shadow_normal_bias; }; struct DirectionalLight { mat4x4 view_projection; vec4 color; vec3 direction_to_light; float shadow_depth_bias; float shadow_normal_bias; }; struct FragmentInput { bool is_front; vec4 world_position; vec3 world_normal; vec2 uv; }; uniform View_block_0Vs { mat4x4 view_proj; mat4x4 projection; vec3 world_position; } _group_0_binding_0; uniform Mesh_block_1Vs { mat4x4 model; mat4x4 inverse_transpose_model; uint flags; } _group_2_binding_0; layout(location = 0) in vec3 _p2vs_location0; layout(location = 1) in vec3 _p2vs_location1; layout(location = 2) in vec2 _p2vs_location2; smooth out vec4 _vs2fs_location0; smooth out vec3 _vs2fs_location1; smooth out vec2 _vs2fs_location2; float saturate(float value) { return clamp(value, 0.0, 1.0); } float getDistanceAttenuation(float distanceSquare, float inverseRangeSquared) { float factor = (distanceSquare * inverseRangeSquared); float _e26 = saturate((1.0 - (factor * factor))); float attenuation = (_e26 * _e26); return ((attenuation * 1.0) / max(distanceSquare, 0.00009999999747378752)); } float D_GGX(float roughness, float NoH, vec3 h) { float oneMinusNoHSquared = (1.0 - (NoH * NoH)); float a = (NoH * roughness); float k = (roughness / (oneMinusNoHSquared + (a * a))); float d = ((k * k) * (1.0 / 3.1415927410125732)); return d; } float V_SmithGGXCorrelated(float roughness1, float NoV, float NoL) { float a2_ = (roughness1 * roughness1); float lambdaV = (NoL * sqrt((((NoV - (a2_ * NoV)) * NoV) + a2_))); float lambdaL = (NoV * sqrt((((NoL - (a2_ * NoL)) * NoL) + a2_))); float v1 = (0.5 / (lambdaV + lambdaL)); return v1; } vec3 F_Schlick_vec(vec3 f0_, float f90_, float VoH) { return (f0_ + ((vec3(f90_) - f0_) * pow((1.0 - VoH), 5.0))); } float F_Schlick(float f0_1, float f90_1, float VoH1) { return (f0_1 + ((f90_1 - f0_1) * pow((1.0 - VoH1), 5.0))); } vec3 fresnel(vec3 f0_2, float LoH) { float _e27 = saturate(dot(f0_2, vec3((50.0 * 0.33000001311302185)))); vec3 _e28 = F_Schlick_vec(f0_2, _e27, LoH); return _e28; } vec3 specular(vec3 f0_3, float roughness2, vec3 h1, float NoV1, float NoL1, float NoH1, float LoH1, float specularIntensity) { float _e28 = D_GGX(roughness2, NoH1, h1); float _e29 = V_SmithGGXCorrelated(roughness2, NoV1, NoL1); vec3 _e30 = fresnel(f0_3, LoH1); return (((specularIntensity * _e28) * _e29) * _e30); } float Fd_Burley(float roughness3, float NoV2, float NoL2, float LoH2) { float f90_2 = (0.5 + (((2.0 * roughness3) * LoH2) * LoH2)); float _e31 = F_Schlick(1.0, f90_2, NoL2); float _e33 = F_Schlick(1.0, f90_2, NoV2); return ((_e31 * _e33) * (1.0 / 3.1415927410125732)); } vec3 EnvBRDFApprox(vec3 f0_4, float perceptual_roughness1, float NoV3) { vec4 c0_ = vec4(-1.0, -0.027499999850988388, -0.5720000267028809, 0.02199999988079071); vec4 c1_ = vec4(1.0, 0.042500000447034836, 1.0399999618530273, -0.03999999910593033); vec4 r = ((perceptual_roughness1 * c0_) + c1_); float a004_ = ((min((r.x * r.x), exp2((-9.279999732971191 * NoV3))) * r.x) + r.y); vec2 AB = ((vec2(-1.0399999618530273, 1.0399999618530273) * a004_) + r.zw); return ((f0_4 * AB.x) + vec3(AB.y)); } float perceptualRoughnessToRoughness(float perceptualRoughness) { float clampedPerceptualRoughness = clamp(perceptualRoughness, 0.08900000154972076, 1.0); return (clampedPerceptualRoughness * clampedPerceptualRoughness); } vec3 reinhard(vec3 color) { return (color / (vec3(1.0) + color)); } vec3 reinhard_extended(vec3 color1, float max_white) { vec3 numerator = (color1 * (vec3(1.0) + (color1 / vec3((max_white * max_white))))); return (numerator / (vec3(1.0) + color1)); } float luminance(vec3 v) { return dot(v, vec3(0.2125999927520752, 0.7152000069618225, 0.0722000002861023)); } vec3 change_luminance(vec3 c_in, float l_out) { float _e22 = luminance(c_in); return (c_in * (l_out / _e22)); } vec3 reinhard_luminance(vec3 color2) { float _e21 = luminance(color2); float l_new = (_e21 / (1.0 + _e21)); vec3 _e25 = change_luminance(color2, l_new); return _e25; } vec3 reinhard_extended_luminance(vec3 color3, float max_white_l) { float _e22 = luminance(color3); float numerator1 = (_e22 * (1.0 + (_e22 / (max_white_l * max_white_l)))); float l_new1 = (numerator1 / (1.0 + _e22)); vec3 _e31 = change_luminance(color3, l_new1); return _e31; } vec3 point_light(vec3 world_position, PointLight light, float roughness4, float NdotV, vec3 N1, vec3 V1, vec3 R, vec3 F0_, vec3 diffuseColor) { vec3 L = vec3(0.0, 0.0, 0.0); vec3 H = vec3(0.0, 0.0, 0.0); float NoL3 = 0.0; float NoH2 = 0.0; float LoH3 = 0.0; vec3 light_to_frag = (light.position.xyz - world_position.xyz); float distance_square = dot(light_to_frag, light_to_frag); float _e35 = getDistanceAttenuation(distance_square, light.inverse_square_range); vec3 centerToRay = ((dot(light_to_frag, R) * R) - light_to_frag); float _e43 = saturate((light.radius * inversesqrt(dot(centerToRay, centerToRay)))); vec3 closestPoint = (light_to_frag + (centerToRay * _e43)); float LspecLengthInverse = inversesqrt(dot(closestPoint, closestPoint)); float _e53 = saturate((roughness4 + ((light.radius * 0.5) * LspecLengthInverse))); float normalizationFactor = (roughness4 / _e53); float specularIntensity1 = (normalizationFactor * normalizationFactor); L = (closestPoint * LspecLengthInverse); vec3 _e58 = L; H = normalize((_e58 + V1)); vec3 _e62 = L; float _e64 = saturate(dot(N1, _e62)); NoL3 = _e64; vec3 _e66 = H; float _e68 = saturate(dot(N1, _e66)); NoH2 = _e68; vec3 _e70 = L; vec3 _e71 = H; float _e73 = saturate(dot(_e70, _e71)); LoH3 = _e73; vec3 _e75 = H; float _e76 = NoL3; float _e77 = NoH2; float _e78 = LoH3; vec3 _e79 = specular(F0_, roughness4, _e75, NdotV, _e76, _e77, _e78, specularIntensity1); L = normalize(light_to_frag); vec3 _e81 = L; H = normalize((_e81 + V1)); vec3 _e84 = L; float _e86 = saturate(dot(N1, _e84)); NoL3 = _e86; vec3 _e87 = H; float _e89 = saturate(dot(N1, _e87)); NoH2 = _e89; vec3 _e90 = L; vec3 _e91 = H; float _e93 = saturate(dot(_e90, _e91)); LoH3 = _e93; float _e94 = NoL3; float _e95 = LoH3; float _e96 = Fd_Burley(roughness4, NdotV, _e94, _e95); vec3 diffuse = (diffuseColor * _e96); float _e102 = NoL3; return (((diffuse + _e79) * light.color.xyz) * (_e35 * _e102)); } vec3 directional_light(DirectionalLight light1, float roughness5, float NdotV1, vec3 normal, vec3 view, vec3 R1, vec3 F0_1, vec3 diffuseColor1) { vec3 incident_light = light1.direction_to_light.xyz; vec3 half_vector = normalize((incident_light + view)); float _e33 = saturate(dot(normal, incident_light)); float _e35 = saturate(dot(normal, half_vector)); float _e37 = saturate(dot(incident_light, half_vector)); float _e38 = Fd_Burley(roughness5, NdotV1, _e33, _e37); vec3 diffuse1 = (diffuseColor1 * _e38); vec3 _e41 = specular(F0_1, roughness5, half_vector, NdotV1, _e33, _e35, _e37, 1.0); return (((_e41 + diffuse1) * light1.color.xyz) * _e33); } void main() { Vertex vertex1 = Vertex(_p2vs_location0, _p2vs_location1, _p2vs_location2); VertexOutput out1; mat4x4 _e5 = _group_2_binding_0.model; vec4 world_position1 = (_e5 * vec4(vertex1.position, 1.0)); out1.uv = vertex1.uv; out1.world_position = world_position1; mat4x4 _e16 = _group_0_binding_0.view_proj; out1.clip_position = (_e16 * world_position1); vec4 _e21 = _group_2_binding_0.inverse_transpose_model[0]; vec4 _e25 = _group_2_binding_0.inverse_transpose_model[1]; vec4 _e29 = _group_2_binding_0.inverse_transpose_model[2]; out1.world_normal = (mat3x3(_e21.xyz, _e25.xyz, _e29.xyz) * vertex1.normal); VertexOutput _e34 = out1; gl_Position = _e34.clip_position; _vs2fs_location0 = _e34.world_position; _vs2fs_location1 = _e34.world_normal; _vs2fs_location2 = _e34.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } log.target = "wgpu_hal::gles::device"; log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 106; [Log] INFO Compiled shader Fragment #version 300 es (atari_antic.js, line 377) precision highp float; precision highp int; struct Vertex { vec3 position; vec3 normal; vec2 uv; }; struct VertexOutput { vec4 clip_position; vec4 world_position; vec3 world_normal; vec2 uv; }; struct PointLight { mat4x4 projection; vec4 color; vec3 position; float inverse_square_range; float radius; float near; float far; float shadow_depth_bias; float shadow_normal_bias; }; struct DirectionalLight { mat4x4 view_projection; vec4 color; vec3 direction_to_light; float shadow_depth_bias; float shadow_normal_bias; }; struct FragmentInput { bool is_front; vec4 world_position; vec3 world_normal; vec2 uv; }; uniform View_block_0Fs { mat4x4 view_proj; mat4x4 projection; vec3 world_position; } _group_0_binding_0; uniform Mesh_block_1Fs { mat4x4 model; mat4x4 inverse_transpose_model; uint flags; } _group_2_binding_0; uniform Lights_block_2Fs { PointLight point_lights[10]; DirectionalLight directional_lights[1]; vec4 ambient_color; uint n_point_lights; uint n_directional_lights; } _group_0_binding_1; uniform StandardMaterial_block_3Fs { vec4 base_color; vec4 emissive; float perceptual_roughness; float metallic; float reflectance; uint flags; } _group_1_binding_0; uniform highp sampler2D _group_1_binding_1; uniform highp sampler2D _group_1_binding_3; uniform highp sampler2D _group_1_binding_5; uniform highp sampler2D _group_1_binding_7; smooth in vec4 _vs2fs_location0; smooth in vec3 _vs2fs_location1; smooth in vec2 _vs2fs_location2; layout(location = 0) out vec4 _fs2p_location0; float saturate(float value) { return clamp(value, 0.0, 1.0); } float getDistanceAttenuation(float distanceSquare, float inverseRangeSquared) { float factor = (distanceSquare * inverseRangeSquared); float _e26 = saturate((1.0 - (factor * factor))); float attenuation = (_e26 * _e26); return ((attenuation * 1.0) / max(distanceSquare, 0.00009999999747378752)); } float D_GGX(float roughness, float NoH, vec3 h) { float oneMinusNoHSquared = (1.0 - (NoH * NoH)); float a = (NoH * roughness); float k = (roughness / (oneMinusNoHSquared + (a * a))); float d = ((k * k) * (1.0 / 3.1415927410125732)); return d; } float V_SmithGGXCorrelated(float roughness1, float NoV, float NoL) { float a2_ = (roughness1 * roughness1); float lambdaV = (NoL * sqrt((((NoV - (a2_ * NoV)) * NoV) + a2_))); float lambdaL = (NoV * sqrt((((NoL - (a2_ * NoL)) * NoL) + a2_))); float v1 = (0.5 / (lambdaV + lambdaL)); return v1; } vec3 F_Schlick_vec(vec3 f0_, float f90_, float VoH) { return (f0_ + ((vec3(f90_) - f0_) * pow((1.0 - VoH), 5.0))); } float F_Schlick(float f0_1, float f90_1, float VoH1) { return (f0_1 + ((f90_1 - f0_1) * pow((1.0 - VoH1), 5.0))); } vec3 fresnel(vec3 f0_2, float LoH) { float _e27 = saturate(dot(f0_2, vec3((50.0 * 0.33000001311302185)))); vec3 _e28 = F_Schlick_vec(f0_2, _e27, LoH); return _e28; } vec3 specular(vec3 f0_3, float roughness2, vec3 h1, float NoV1, float NoL1, float NoH1, float LoH1, float specularIntensity) { float _e28 = D_GGX(roughness2, NoH1, h1); float _e29 = V_SmithGGXCorrelated(roughness2, NoV1, NoL1); vec3 _e30 = fresnel(f0_3, LoH1); return (((specularIntensity * _e28) * _e29) * _e30); } float Fd_Burley(float roughness3, float NoV2, float NoL2, float LoH2) { float f90_2 = (0.5 + (((2.0 * roughness3) * LoH2) * LoH2)); float _e31 = F_Schlick(1.0, f90_2, NoL2); float _e33 = F_Schlick(1.0, f90_2, NoV2); return ((_e31 * _e33) * (1.0 / 3.1415927410125732)); } vec3 EnvBRDFApprox(vec3 f0_4, float perceptual_roughness1, float NoV3) { vec4 c0_ = vec4(-1.0, -0.027499999850988388, -0.5720000267028809, 0.02199999988079071); vec4 c1_ = vec4(1.0, 0.042500000447034836, 1.0399999618530273, -0.03999999910593033); vec4 r = ((perceptual_roughness1 * c0_) + c1_); float a004_ = ((min((r.x * r.x), exp2((-9.279999732971191 * NoV3))) * r.x) + r.y); vec2 AB = ((vec2(-1.0399999618530273, 1.0399999618530273) * a004_) + r.zw); return ((f0_4 * AB.x) + vec3(AB.y)); } float perceptualRoughnessToRoughness(float perceptualRoughness) { float clampedPerceptualRoughness = clamp(perceptualRoughness, 0.08900000154972076, 1.0); return (clampedPerceptualRoughness * clampedPerceptualRoughness); } vec3 reinhard(vec3 color) { return (color / (vec3(1.0) + color)); } vec3 reinhard_extended(vec3 color1, float max_white) { vec3 numerator = (color1 * (vec3(1.0) + (color1 / vec3((max_white * max_white))))); return (numerator / (vec3(1.0) + color1)); } float luminance(vec3 v) { return dot(v, vec3(0.2125999927520752, 0.7152000069618225, 0.0722000002861023)); } vec3 change_luminance(vec3 c_in, float l_out) { float _e22 = luminance(c_in); return (c_in * (l_out / _e22)); } vec3 reinhard_luminance(vec3 color2) { float _e21 = luminance(color2); float l_new = (_e21 / (1.0 + _e21)); vec3 _e25 = change_luminance(color2, l_new); return _e25; } vec3 reinhard_extended_luminance(vec3 color3, float max_white_l) { float _e22 = luminance(color3); float numerator1 = (_e22 * (1.0 + (_e22 / (max_white_l * max_white_l)))); float l_new1 = (numerator1 / (1.0 + _e22)); vec3 _e31 = change_luminance(color3, l_new1); return _e31; } vec3 point_light(vec3 world_position, PointLight light, float roughness4, float NdotV, vec3 N1, vec3 V1, vec3 R, vec3 F0_, vec3 diffuseColor) { vec3 L = vec3(0.0, 0.0, 0.0); vec3 H = vec3(0.0, 0.0, 0.0); float NoL3 = 0.0; float NoH2 = 0.0; float LoH3 = 0.0; vec3 light_to_frag = (light.position.xyz - world_position.xyz); float distance_square = dot(light_to_frag, light_to_frag); float _e35 = getDistanceAttenuation(distance_square, light.inverse_square_range); vec3 centerToRay = ((dot(light_to_frag, R) * R) - light_to_frag); float _e43 = saturate((light.radius * inversesqrt(dot(centerToRay, centerToRay)))); vec3 closestPoint = (light_to_frag + (centerToRay * _e43)); float LspecLengthInverse = inversesqrt(dot(closestPoint, closestPoint)); float _e53 = saturate((roughness4 + ((light.radius * 0.5) * LspecLengthInverse))); float normalizationFactor = (roughness4 / _e53); float specularIntensity1 = (normalizationFactor * normalizationFactor); L = (closestPoint * LspecLengthInverse); vec3 _e58 = L; H = normalize((_e58 + V1)); vec3 _e62 = L; float _e64 = saturate(dot(N1, _e62)); NoL3 = _e64; vec3 _e66 = H; float _e68 = saturate(dot(N1, _e66)); NoH2 = _e68; vec3 _e70 = L; vec3 _e71 = H; float _e73 = saturate(dot(_e70, _e71)); LoH3 = _e73; vec3 _e75 = H; float _e76 = NoL3; float _e77 = NoH2; float _e78 = LoH3; vec3 _e79 = specular(F0_, roughness4, _e75, NdotV, _e76, _e77, _e78, specularIntensity1); L = normalize(light_to_frag); vec3 _e81 = L; H = normalize((_e81 + V1)); vec3 _e84 = L; float _e86 = saturate(dot(N1, _e84)); NoL3 = _e86; vec3 _e87 = H; float _e89 = saturate(dot(N1, _e87)); NoH2 = _e89; vec3 _e90 = L; vec3 _e91 = H; float _e93 = saturate(dot(_e90, _e91)); LoH3 = _e93; float _e94 = NoL3; float _e95 = LoH3; float _e96 = Fd_Burley(roughness4, NdotV, _e94, _e95); vec3 diffuse = (diffuseColor * _e96); float _e102 = NoL3; return (((diffuse + _e79) * light.color.xyz) * (_e35 * _e102)); } vec3 directional_light(DirectionalLight light1, float roughness5, float NdotV1, vec3 normal, vec3 view, vec3 R1, vec3 F0_1, vec3 diffuseColor1) { vec3 incident_light = light1.direction_to_light.xyz; vec3 half_vector = normalize((incident_light + view)); float _e33 = saturate(dot(normal, incident_light)); float _e35 = saturate(dot(normal, half_vector)); float _e37 = saturate(dot(incident_light, half_vector)); float _e38 = Fd_Burley(roughness5, NdotV1, _e33, _e37); vec3 diffuse1 = (diffuseColor1 * _e38); vec3 _e41 = specular(F0_1, roughness5, half_vector, NdotV1, _e33, _e35, _e37, 1.0); return (((_e41 + diffuse1) * light1.color.xyz) * _e33); } float fetch_point_shadow(int light_id, vec4 frag_position, vec3 surface_normal) { PointLight light2 = _group_0_binding_1.point_lights[light_id]; vec3 surface_to_light = (light2.position.xyz - frag_position.xyz); vec3 surface_to_light_abs = abs(surface_to_light); float distance_to_light = max(surface_to_light_abs.x, max(surface_to_light_abs.y, surface_to_light_abs.z)); vec3 normal_offset = ((light2.shadow_normal_bias * distance_to_light) * surface_normal.xyz); vec3 depth_offset = (light2.shadow_depth_bias * normalize(surface_to_light.xyz)); vec3 offset_position = ((frag_position.xyz + normal_offset) + depth_offset); vec3 frag_ls = (light2.position.xyz - offset_position.xyz); vec3 abs_position_ls = abs(frag_ls); float major_axis_magnitude = max(abs_position_ls.x, max(abs_position_ls.y, abs_position_ls.z)); float z = (((- major_axis_magnitude) * light2.projection[2].z) + light2.projection[3].z); float w = (((- major_axis_magnitude) * light2.projection[2].w) + light2.projection[3].w); float depth = (z / w); return 1.0; } float fetch_directional_shadow(int light_id1, vec4 frag_position1, vec3 surface_normal1) { DirectionalLight light3 = _group_0_binding_1.directional_lights[light_id1]; vec3 normal_offset1 = (light3.shadow_normal_bias * surface_normal1.xyz); vec3 depth_offset1 = (light3.shadow_depth_bias * light3.direction_to_light.xyz); vec4 offset_position1 = vec4(((frag_position1.xyz + normal_offset1) + depth_offset1), frag_position1.w); vec4 offset_position_clip = (light3.view_projection * offset_position1); if ((offset_position_clip.w <= 0.0)) { return 1.0; } vec3 offset_position_ndc = (offset_position_clip.xyz / vec3(offset_position_clip.w)); if (((any(lessThan(offset_position_ndc.xy, vec2(-1.0))) || (offset_position_ndc.z < 0.0)) || any(greaterThan(offset_position_ndc, vec3(1.0))))) { return 1.0; } vec2 flip_correction = vec2(0.5, -0.5); vec2 light_local = ((offset_position_ndc.xy * flip_correction) + vec2(0.5, 0.5)); float depth1 = offset_position_ndc.z; return 1.0; } void main() { FragmentInput in1 = FragmentInput(gl_FrontFacing, _vs2fs_location0, _vs2fs_location1, _vs2fs_location2); vec4 output_color = vec4(0.0, 0.0, 0.0, 0.0); vec4 emissive = vec4(0.0, 0.0, 0.0, 0.0); float metallic = 0.0; float perceptual_roughness = 0.0; float occlusion = 0.0; vec3 N = vec3(0.0, 0.0, 0.0); vec3 V = vec3(0.0, 0.0, 0.0); vec3 light_accum = vec3(0.0, 0.0, 0.0); int i = 0; float shadow = 0.0; int i1 = 0; float shadow1 = 0.0; vec4 _e22 = _group_1_binding_0.base_color; output_color = _e22; uint _e25 = _group_1_binding_0.flags; if (((_e25 & 1u) != 0u)) { vec4 _e29 = output_color; vec4 _e31 = texture(_group_1_binding_1, vec2(in1.uv)); output_color = (_e29 * _e31); } uint _e34 = _group_1_binding_0.flags; if (((_e34 & 32u) == 0u)) { vec4 _e39 = _group_1_binding_0.emissive; emissive = _e39; uint _e42 = _group_1_binding_0.flags; if (((_e42 & 2u) != 0u)) { vec4 _e46 = emissive; vec4 _e49 = texture(_group_1_binding_3, vec2(in1.uv)); emissive = vec4((_e46.xyz * _e49.xyz), 1.0); } float _e55 = _group_1_binding_0.metallic; metallic = _e55; float _e58 = _group_1_binding_0.perceptual_roughness; perceptual_roughness = _e58; uint _e61 = _group_1_binding_0.flags; if (((_e61 & 4u) != 0u)) { vec4 metallic_roughness = texture(_group_1_binding_5, vec2(in1.uv)); float _e67 = metallic; metallic = (_e67 * metallic_roughness.z); float _e70 = perceptual_roughness; perceptual_roughness = (_e70 * metallic_roughness.y); } float _e73 = perceptual_roughness; float _e74 = perceptualRoughnessToRoughness(_e73); occlusion = 1.0; uint _e78 = _group_1_binding_0.flags; if (((_e78 & 8u) != 0u)) { vec4 _e83 = texture(_group_1_binding_7, vec2(in1.uv)); occlusion = _e83.x; } N = normalize(in1.world_normal); uint _e89 = _group_1_binding_0.flags; if (((_e89 & 16u) != 0u)) { if ((! in1.is_front)) { vec3 _e95 = N; N = (- _e95); } } float _e101 = _group_0_binding_0.projection[3][3]; if ((_e101 != 1.0)) { vec3 _e105 = _group_0_binding_0.world_position; V = normalize((_e105.xyz - in1.world_position.xyz)); } else { float _e114 = _group_0_binding_0.view_proj[0][2]; float _e118 = _group_0_binding_0.view_proj[1][2]; float _e122 = _group_0_binding_0.view_proj[2][2]; V = normalize(vec3(_e114, _e118, _e122)); } vec3 _e125 = N; vec3 _e126 = V; float NdotV2 = max(dot(_e125, _e126), 0.00009999999747378752); float reflectance = _group_1_binding_0.reflectance; float _e136 = metallic; vec4 _e139 = output_color; float _e141 = metallic; vec3 F0_2 = (vec3((((0.1599999964237213 * reflectance) * reflectance) * (1.0 - _e136))) + (_e139.xyz * _e141)); vec4 _e145 = output_color; float _e148 = metallic; vec3 diffuse_color = (_e145.xyz * (1.0 - _e148)); vec3 _e151 = V; vec3 _e153 = N; vec3 R2 = reflect((- _e151), _e153); light_accum = vec3(0.0); uint _e159 = _group_0_binding_1.n_point_lights; int n_point_lights = int(_e159); uint _e162 = _group_0_binding_1.n_directional_lights; int n_directional_lights = int(_e162); i = 0; bool loop_init = true; while(true) { if (!loop_init) { int _e168 = i; i = (_e168 + 1); } loop_init = false; int _e166 = i; if ((_e166 < n_point_lights)) { } else { break; } int _e172 = i; PointLight light4 = _group_0_binding_1.point_lights[_e172]; uint _e177 = _group_2_binding_0.flags; if (((_e177 & 1u) != 0u)) { int _e181 = i; float _e184 = fetch_point_shadow(_e181, in1.world_position, in1.world_normal); shadow = _e184; } else { shadow = 1.0; } vec3 _e188 = N; vec3 _e189 = V; vec3 _e190 = point_light(in1.world_position.xyz, light4, _e74, NdotV2, _e188, _e189, R2, F0_2, diffuse_color); vec3 _e191 = light_accum; float _e192 = shadow; light_accum = (_e191 + (_e190 * _e192)); } i1 = 0; bool loop_init1 = true; while(true) { if (!loop_init1) { int _e199 = i1; i1 = (_e199 + 1); } loop_init1 = false; int _e197 = i1; if ((_e197 < n_directional_lights)) { } else { break; } int _e203 = i1; DirectionalLight light5 = _group_0_binding_1.directional_lights[_e203]; uint _e208 = _group_2_binding_0.flags; if (((_e208 & 1u) != 0u)) { int _e212 = i1; float _e215 = fetch_directional_shadow(_e212, in1.world_position, in1.world_normal); shadow1 = _e215; } else { shadow1 = 1.0; } vec3 _e217 = N; vec3 _e218 = V; vec3 _e219 = directional_light(light5, _e74, NdotV2, _e217, _e218, R2, F0_2, diffuse_color); vec3 _e220 = light_accum; float _e221 = shadow1; light_accum = (_e220 + (_e219 * _e221)); } vec3 _e225 = EnvBRDFApprox(diffuse_color, 1.0, NdotV2); float _e226 = perceptual_roughness; vec3 _e227 = EnvBRDFApprox(F0_2, _e226, NdotV2); vec3 _e228 = light_accum; vec4 _e231 = _group_0_binding_1.ambient_color; float _e234 = occlusion; vec4 _e237 = emissive; float _e240 = output_color.w; float _e244 = output_color.w; output_color = vec4(((_e228 + (((_e225 + _e227) * _e231.xyz) * _e234)) + (_e237.xyz * _e240)), _e244); vec4 _e246 = output_color; vec3 _e248 = reinhard_luminance(_e246.xyz); float _e250 = output_color.w; output_color = vec4(_e248, _e250); } vec4 _e252 = output_color; _fs2p_location0 = _e252; return; } log.target = "wgpu_hal::gles::device"; log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 106; [Log] INFO Linked program WebProgramKey(2v1) log.target = "wgpu_hal::gles::device"; (atari_antic.js, line 377) log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 226; [Log] WARN Link: (atari_antic.js, line 377) log.target = "wgpu_hal::gles::device"; log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 234; [Log] INFO Created texture Valid((0, 1, Gl)) with TextureDescriptor { label: None, size: Extent3d { width: 1, height: 1, depth_or_array_layers: 1 }, mip_level_count: 1, sample_count: 1, dimension: D2, format: Rgba8UnormSrgb, usage: COPY_DST | TEXTURE_BINDING } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 3135; [Log] INFO Compiled shader Vertex #version 300 es (atari_antic.js, line 377) precision highp float; precision highp int; struct Vertex { vec3 position; }; struct VertexOutput { vec4 clip_position; }; uniform View_block_0Vs { mat4x4 view_proj; mat4x4 projection; vec3 world_position; } _group_0_binding_0; uniform Mesh_block_1Vs { mat4x4 model; mat4x4 inverse_transpose_model; uint flags; } _group_1_binding_0; layout(location = 0) in vec3 _p2vs_location0; void main() { Vertex vertex1 = Vertex(_p2vs_location0); VertexOutput out1; mat4x4 _e6 = _group_0_binding_0.view_proj; mat4x4 _e8 = _group_1_binding_0.model; out1.clip_position = ((_e6 * _e8) * vec4(vertex1.position, 1.0)); VertexOutput _e14 = out1; gl_Position = _e14.clip_position; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } log.target = "wgpu_hal::gles::device"; log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 106; [Log] INFO Only vertex shader is present. Creating an empty fragment shader log.target = "wgpu_hal::gles::device"; (atari_antic.js, line 377) log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 211; [Log] INFO Compiled shader Fragment #version 300 es (atari_antic.js, line 377) void main(void) {} log.target = "wgpu_hal::gles::device"; log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 106; [Log] INFO Linked program WebProgramKey(3v1) log.target = "wgpu_hal::gles::device"; (atari_antic.js, line 377) log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 226; [Log] WARN Link: (atari_antic.js, line 377) log.target = "wgpu_hal::gles::device"; log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 234; [Log] INFO Compiled shader Vertex #version 300 es (atari_antic.js, line 377) precision highp float; precision highp int; struct Vertex { vec3 position; vec2 uv; vec4 custom; }; struct VertexOutput { vec4 clip_position; vec2 uv; vec4 custom; }; struct GTIA1_ { ivec4 color_regs1_; ivec4 color_regs2_; ivec4 color_pm; }; struct GTIA2_ { vec4 player_size; vec4 missile_size; ivec4 grafp; }; struct GTIA3_ { vec4 hposp; vec4 hposm; ivec4 prior; }; uniform View_block_0Vs { mat4x4 view_proj; mat4x4 projection; vec3 world_position; } _group_0_binding_0; uniform Mesh_block_1Vs { mat4x4 transform; } _group_2_binding_0; layout(location = 0) in vec3 _p2vs_location0; layout(location = 1) in vec2 _p2vs_location1; layout(location = 2) in vec4 _p2vs_location2; smooth out vec2 _vs2fs_location1; flat out vec4 _vs2fs_location2; vec4 get_pm_pixels(vec4 px, float w, int scan_line2, vec4 msize, vec4 hpos, ivec4 data) { vec4 cond = (vec4(greaterThanEqual(px, hpos)) * vec4(lessThan(px, (hpos + msize)))); uvec4 bit = uvec4(mix(vec4((w - 0.0010000000474974513)), vec4(0.0), ((px - hpos) / msize))); return mix(vec4(0.0), vec4(greaterThan(((data >> bit) & ivec4(1)), ivec4(0))), cond); } void main() { Vertex vertex1 = Vertex(_p2vs_location0, _p2vs_location1, _p2vs_location2); VertexOutput out1; mat4x4 _e9 = _group_2_binding_0.transform; vec4 world_position = (_e9 * vec4(vertex1.position, 1.0)); mat4x4 _e17 = _group_0_binding_0.view_proj; out1.clip_position = (_e17 * world_position); out1.uv = vertex1.uv; out1.custom = vertex1.custom; VertexOutput _e23 = out1; gl_Position = _e23.clip_position; _vs2fs_location1 = _e23.uv; _vs2fs_location2 = _e23.custom; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } log.target = "wgpu_hal::gles::device"; log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 106; [Log] INFO Compiled shader Fragment #version 300 es (atari_antic.js, line 377) precision highp float; precision highp int; struct Vertex { vec3 position; vec2 uv; vec4 custom; }; struct VertexOutput { vec4 clip_position; vec2 uv; vec4 custom; }; struct GTIA1_ { ivec4 color_regs1_; ivec4 color_regs2_; ivec4 color_pm; }; struct GTIA2_ { vec4 player_size; vec4 missile_size; ivec4 grafp; }; struct GTIA3_ { vec4 hposp; vec4 hposm; ivec4 prior; }; uniform GTIA1Regs_block_0Fs { GTIA1_ regs[240]; } _group_1_binding_1; uniform GTIA2Regs_block_1Fs { GTIA2_ regs[240]; } _group_1_binding_2; uniform GTIA3Regs_block_2Fs { GTIA3_ regs[240]; } _group_1_binding_3; uniform Palette_block_3Fs { vec4 palette[256]; } _group_1_binding_4; uniform Memory_block_4Fs { uvec4 memory[128]; } _group_1_binding_5; smooth in vec2 _vs2fs_location1; flat in vec4 _vs2fs_location2; layout(location = 0) out vec4 _fs2p_location0; int get_color_reg(int scan_line, int k) { if ((k <= 3)) { int _e17 = _group_1_binding_1.regs[scan_line].color_regs1_[(k & 3)]; return _e17; } else { int _e24 = _group_1_binding_1.regs[scan_line].color_regs2_[(k & 3)]; return _e24; } } int get_gtia_colpm(int scan_line1, int k1) { int _e13 = _group_1_binding_1.regs[scan_line1].color_pm[k1]; return _e13; } vec4 get_pm_pixels(vec4 px, float w, int scan_line2, vec4 msize, vec4 hpos, ivec4 data) { vec4 cond = (vec4(greaterThanEqual(px, hpos)) * vec4(lessThan(px, (hpos + msize)))); uvec4 bit = uvec4(mix(vec4((w - 0.0010000000474974513)), vec4(0.0), ((px - hpos) / msize))); return mix(vec4(0.0), vec4(greaterThan(((data >> bit) & ivec4(1)), ivec4(0))), cond); } int get_memory(int offset) { int pixel = (offset / 16); uint _e17 = _group_1_binding_5.memory[pixel][((offset / 4) & 3)]; return int(((_e17 >> uint(((offset & 3) * 8))) & 255u)); } void main() { vec2 uv = _vs2fs_location1; vec4 custom = _vs2fs_location2; bool hires = false; int color_reg_index = 0; int color_reg = 0; int byte = 0; uint c0_ = uint(custom.x); uint c1_ = uint(custom.y); int mode = int((c0_ & 255u)); int start_scan_line = int(((c0_ >> 8u) & 255u)); int line_height = int(((c0_ >> 16u) & 255u)); int hscrol = int((c1_ & 255u)); int line_voffset = int(((c1_ >> 8u) & 255u)); float line_width = (float(((c1_ >> 16u) & 255u)) * 2.0); int video_memory_offset = int(custom.z); int charset_memory_offset = int(custom.w); float x = (uv.x * 384.0); float px1 = ((x - 192.0) + (line_width / 2.0)); float px_scrolled = (px1 + float(hscrol)); int cy = int(((uv.y * float(line_height)) * 0.9900000095367432)); int y = (cy + line_voffset); int scan_line3 = (start_scan_line + cy); vec4 hpos_offs = vec4(((line_width / 2.0) - 256.0)); vec4 _e79 = _group_1_binding_3.regs[scan_line3].hposp; vec4 hposp = ((vec4(_e79) * 2.0) + hpos_offs); vec4 _e87 = _group_1_binding_3.regs[scan_line3].hposm; vec4 hposm = ((vec4(_e87) * 2.0) + hpos_offs); int prior = _group_1_binding_3.regs[scan_line3].prior.x; int gtia_mode = (prior >> 6u); if ((((mode == 0) || (px1 < 0.0)) || (px1 >= line_width))) { } else { if ((mode == 2)) { float w1 = (px_scrolled / 8.0); int n = int(w1); float frac = (w1 - float(n)); int _e119 = get_memory((video_memory_offset + n)); int inv = (_e119 >> 7u); int offs = (((_e119 & 127) * 8) + y); int _e128 = get_memory((charset_memory_offset + offs)); byte = _e128; if ((gtia_mode == 0)) { uint bit_offs = (7u - uint((frac * 8.0))); int _e137 = byte; int pixel_val = (((_e137 >> bit_offs) & 1) ^ inv); color_reg_index = (3 - pixel_val); hires = true; } else { uint bit_offs1 = (4u - (uint((frac * 2.0)) * 4u)); int _e152 = byte; int value = ((_e152 >> bit_offs1) & 15); if ((gtia_mode == 1)) { int _e163 = _group_1_binding_1.regs[scan_line3].color_regs1_.x; color_reg = (value | (_e163 & 240)); } else { if ((gtia_mode == 3)) { color_reg = (value << 4u); int _e171 = color_reg; if ((_e171 > 0)) { int _e174 = color_reg; int _e180 = _group_1_binding_1.regs[scan_line3].color_regs1_.x; color_reg = (_e174 | (_e180 & 15)); } } else { if ((gtia_mode == 2)) { if ((value < 4)) { color_reg_index = (value + 1); } else { if ((value < 8)) { int idx = (value - 4); int _e198 = _group_1_binding_1.regs[scan_line3].color_pm[idx]; color_reg = _e198; } else { int _e204 = _group_1_binding_1.regs[scan_line3].color_regs1_.x; color_reg = _e204; } } } } } } } } bool pri0_ = ((prior & 1) > 0); bool pri1_ = ((prior & 2) > 0); bool pri2_ = ((prior & 4) > 0); bool pri3_ = ((prior & 8) > 0); bool pri01_ = (pri0_ || pri1_); bool pri12_ = (pri1_ || pri2_); bool pri23_ = (pri2_ || pri3_); bool pri03_ = (pri0_ || pri3_); vec4 vpx = vec4(px1); uvec4 missile_shift = uvec4(0u, 2u, 4u, 6u); int _e236 = _group_1_binding_3.regs[scan_line3].prior.z; ivec4 mdata = (ivec4(_e236) >> missile_shift); vec4 msize1 = _group_1_binding_2.regs[scan_line3].missile_size; vec4 _e244 = get_pm_pixels(vpx, 2.0, scan_line3, msize1, hposm, mdata); bool m0_ = (_e244.x > 0.0); bool m1_ = (_e244.y > 0.0); bool m2_ = (_e244.z > 0.0); bool m3_ = (_e244.w > 0.0); bool p5_ = ((prior & 16) > 0); vec4 psize = _group_1_binding_2.regs[scan_line3].player_size; ivec4 data1 = _group_1_binding_2.regs[scan_line3].grafp; vec4 _e274 = get_pm_pixels(vpx, 8.0, scan_line3, psize, hposp, data1); bvec4 p_ = bvec4((_e274 + (float((! p5_)) * _e244))); bool p0_ = p_.x; bool p1_ = p_.y; bool p2_ = p_.z; bool p3_ = p_.w; int _e288 = color_reg_index; bool pf0_ = (_e288 == 1); bool _e291 = hires; int _e293 = color_reg_index; bool pf1_ = ((! _e291) && (_e293 == 2)); bool _e297 = hires; int _e298 = color_reg_index; bool pf2_ = (_e297 || (_e298 == 3)); int _e302 = color_reg_index; bool pf3_ = ((_e302 == 4) || (p5_ && (((m0_ || m1_) || m2_) || m3_))); bool p01_ = (p0_ || p1_); bool p23_ = (p2_ || p3_); bool pf01_ = (pf0_ || pf1_); bool pf23_ = (pf2_ || pf3_); bool multi = ((prior & 32) > 0); bool sp0_ = ((p0_ && (! (pf01_ && pri23_))) && (! (pri2_ && pf23_))); bool sp1_ = (((p1_ && (! (pf01_ && pri23_))) && (! (pri2_ && pf23_))) && ((! p0_) || multi)); bool sp2_ = (((p2_ && (! p01_)) && (! (pf23_ && pri12_))) && (! (pf01_ && (! pri0_)))); bool sp3_ = ((((p3_ && (! p01_)) && (! (pf23_ && pri12_))) && (! (pf01_ && (! pri0_)))) && ((! p2_) || multi)); bool sf3_ = ((pf3_ && (! (p23_ && pri03_))) && (! (p01_ && (! pri2_)))); bool sf0_ = (((pf0_ && (! (p23_ && pri0_))) && (! (p01_ && pri01_))) && (! sf3_)); bool sf1_ = (((pf1_ && (! (p23_ && pri0_))) && (! (p01_ && pri01_))) && (! sf3_)); bool sf2_ = (((pf2_ && (! (p23_ && pri03_))) && (! (p01_ && (! pri2_)))) && (! sf3_)); bool sb = ((((! p01_) && (! p23_)) && (! pf01_)) && (! pf23_)); if (sp0_) { int _e393 = color_reg; int _e399 = _group_1_binding_1.regs[scan_line3].color_pm.x; color_reg = (_e393 | _e399); } if (sp1_) { int _e401 = color_reg; int _e407 = _group_1_binding_1.regs[scan_line3].color_pm.y; color_reg = (_e401 | _e407); } if (sp2_) { int _e409 = color_reg; int _e415 = _group_1_binding_1.regs[scan_line3].color_pm.z; color_reg = (_e409 | _e415); } if (sp3_) { int _e417 = color_reg; int _e423 = _group_1_binding_1.regs[scan_line3].color_pm.w; color_reg = (_e417 | _e423); } if (sf0_) { int _e425 = color_reg; int _e431 = _group_1_binding_1.regs[scan_line3].color_regs1_.y; color_reg = (_e425 | _e431); } if (sf1_) { int _e433 = color_reg; int _e439 = _group_1_binding_1.regs[scan_line3].color_regs1_.z; color_reg = (_e433 | _e439); } if (sf2_) { int _e441 = color_reg; int _e447 = _group_1_binding_1.regs[scan_line3].color_regs1_.w; color_reg = (_e441 | _e447); } if (sf3_) { int _e449 = color_reg; int _e457 = _group_1_binding_1.regs[scan_line3].color_regs2_[(4 & 3)]; color_reg = (_e449 | _e457); } if ((sb && (gtia_mode == 0))) { int _e462 = color_reg; int _e468 = _group_1_binding_1.regs[scan_line3].color_regs1_.x; color_reg = (_e462 | _e468); } bool _e470 = hires; int _e471 = color_reg_index; if ((_e470 && (_e471 == 2))) { int _e475 = color_reg; int _e483 = _group_1_binding_1.regs[scan_line3].color_regs1_.z; color_reg = ((_e475 & 240) | (_e483 & 15)); } int _e488 = color_reg; vec4 _e490 = _group_1_binding_4.palette[_e488]; _fs2p_location0 = _e490; return; } log.target = "wgpu_hal::gles::device"; log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 106; [Log] INFO Linked program WebProgramKey(4v1) log.target = "wgpu_hal::gles::device"; (atari_antic.js, line 377) log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 226; [Log] WARN Link: (atari_antic.js, line 377) log.target = "wgpu_hal::gles::device"; log.module_path = "wgpu_hal::gles::device"; log.file = "/home/mrk/private/wgpu/wgpu-hal/src/gles/device.rs"; log.line = 234; [Log] INFO src/atari_data.rs:114 custom: [[548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0]] (atari_antic.js, line 377) [Log] INFO src/atari_data.rs:114 custom: [[548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0]] (atari_antic.js, line 377) [Log] INFO src/atari_data.rs:114 custom: [[548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0]] (atari_antic.js, line 377) [Log] INFO src/atari_data.rs:114 custom: [[548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0]] (atari_antic.js, line 377) [Log] INFO src/atari_data.rs:114 custom: [[548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [557058.0, 8388608.0, 1024.0, 0.0], [557058.0, 8388608.0, 1024.0, 0.0], [557058.0, 8388608.0, 1024.0, 0.0], [557058.0, 8388608.0, 1024.0, 0.0]] (atari_antic.js, line 377) [Log] INFO src/atari_data.rs:114 custom: [[548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [548864.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [550914.0, 8388608.0, 1024.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [552962.0, 8388608.0, 1064.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [555010.0, 8388608.0, 1104.0, 0.0], [557058.0, 8388608.0, 1024.0, 0.0], [557058.0, 8388608.0, 1024.0, 0.0], [557058.0, 8388608.0, 1024.0, 0.0], [557058.0, 8388608.0, 1024.0, 0.0], [559104.0, 8388608.0, 1024.0, 0.0], [559104.0, 8388608.0, 1024.0, 0.0], [559104.0, 8388608.0, 1024.0, 0.0], [559104.0, 8388608.0, 1024.0, 0.0]] (atari_antic.js, line 377) [Log] INFO Created buffer Valid((0, 1, Gl)) with BufferDescriptor { label: None, size: 1536, usage: COPY_DST | UNIFORM, mapped_at_creation: false } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862; [Log] INFO Created texture Valid((1, 1, Gl)) with TextureDescriptor { label: Some("point_light_shadow_map_texture"), size: Extent3d { width: 1024, height: 1024, depth_or_array_layers: 6 }, mip_level_count: 1, sample_count: 1, dimension: D2, format: Depth32Float, usage: TEXTURE_BINDING | RENDER_ATTACHMENT } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 3135; [Log] INFO Created texture Valid((2, 1, Gl)) with TextureDescriptor { label: Some("directional_light_shadow_map_texture"), size: Extent3d { width: 1024, height: 1024, depth_or_array_layers: 1 }, mip_level_count: 1, sample_count: 1, dimension: D2, format: Depth32Float, usage: TEXTURE_BINDING | RENDER_ATTACHMENT } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 3135; [Log] INFO Created buffer Valid((1, 1, Gl)) with BufferDescriptor { label: None, size: 2048, usage: COPY_DST | UNIFORM, mapped_at_creation: true } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862; [Log] INFO Created buffer Valid((2, 1, Gl)) with BufferDescriptor { label: None, size: 4096, usage: COPY_DST | UNIFORM, mapped_at_creation: true } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862; [Log] INFO Created buffer Valid((3, 1, Gl)) with BufferDescriptor { label: None, size: 11520, usage: COPY_DST | UNIFORM, mapped_at_creation: true } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862; [Log] INFO Created buffer Valid((4, 1, Gl)) with BufferDescriptor { label: None, size: 11520, usage: COPY_DST | UNIFORM, mapped_at_creation: true } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862; [Log] INFO Created buffer Valid((5, 1, Gl)) with BufferDescriptor { label: None, size: 11520, usage: COPY_DST | UNIFORM, mapped_at_creation: true } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862; [Log] INFO Created texture Valid((3, 1, Gl)) with TextureDescriptor { label: Some("view_depth_texture"), size: Extent3d { width: 768, height: 480, depth_or_array_layers: 1 }, mip_level_count: 1, sample_count: 1, dimension: D2, format: Depth32Float, usage: RENDER_ATTACHMENT } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 3135; [Log] INFO configuring surface with SurfaceConfiguration { usage: RENDER_ATTACHMENT, format: Rgba8UnormSrgb, width: 768, height: 480, present_mode: Fifo } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 4458; [Log] INFO /home/mrk/private/rust/bevy/pipelined/bevy_render2/src/mesh/mesh/mod.rs:197 interleaved buffer: [ (atari_antic.js, line 377) [ -192.0, 16.0, 0.0, 0.0, 1.0, 548864.0, 8388608.0, 1024.0, 0.0, ], [ -192.0, 24.0, 0.0, 0.0, 0.0, 548864.0, 8388608.0, 1024.0, 0.0, ], [ 192.0, 24.0, 0.0, 1.0, 0.0, 548864.0, 8388608.0, 1024.0, 0.0, ], [ 192.0, 16.0, 0.0, 1.0, 1.0, 548864.0, 8388608.0, 1024.0, 0.0, ], [ -192.0, 8.0, 0.0, 0.0, 1.0, 550914.0, 8388608.0, 1024.0, 0.0, ], [ -192.0, 16.0, 0.0, 0.0, 0.0, 550914.0, 8388608.0, 1024.0, 0.0, ], [ 192.0, 16.0, 0.0, 1.0, 0.0, 550914.0, 8388608.0, 1024.0, 0.0, ], [ 192.0, 8.0, 0.0, 1.0, 1.0, 550914.0, 8388608.0, 1024.0, 0.0, ], [ -192.0, 0.0, 0.0, 0.0, 1.0, 552962.0, 8388608.0, 1064.0, 0.0, ], [ -192.0, 8.0, 0.0, 0.0, 0.0, 552962.0, 8388608.0, 1064.0, 0.0, ], [ 192.0, 8.0, 0.0, 1.0, 0.0, 552962.0, 8388608.0, 1064.0, 0.0, ], [ 192.0, 0.0, 0.0, 1.0, 1.0, 552962.0, 8388608.0, 1064.0, 0.0, ], [ -192.0, -8.0, 0.0, 0.0, 1.0, 555010.0, 8388608.0, 1104.0, 0.0, ], [ -192.0, 0.0, 0.0, 0.0, 0.0, 555010.0, 8388608.0, 1104.0, 0.0, ], [ 192.0, 0.0, 0.0, 1.0, 0.0, 555010.0, 8388608.0, 1104.0, 0.0, ], [ 192.0, -8.0, 0.0, 1.0, 1.0, 555010.0, 8388608.0, 1104.0, 0.0, ], [ -192.0, -16.0, 0.0, 0.0, 1.0, 557058.0, 8388608.0, 1024.0, 0.0, ], [ -192.0, -8.0, 0.0, 0.0, 0.0, 557058.0, 8388608.0, 1024.0, 0.0, ], [ 192.0, -8.0, 0.0, 1.0, 0.0, 557058.0, 8388608.0, 1024.0, 0.0, ], [ 192.0, -16.0, 0.0, 1.0, 1.0, 557058.0, 8388608.0, 1024.0, 0.0, ], [ -192.0, -24.0, 0.0, 0.0, 1.0, 559104.0, 8388608.0, 1024.0, 0.0, ], [ -192.0, -16.0, 0.0, 0.0, 0.0, 559104.0, 8388608.0, 1024.0, 0.0, ], [ 192.0, -16.0, 0.0, 1.0, 0.0, 559104.0, 8388608.0, 1024.0, 0.0, ], [ 192.0, -24.0, 0.0, 1.0, 1.0, 559104.0, 8388608.0, 1024.0, 0.0, ], ] [Log] INFO Created buffer Valid((6, 1, Gl)) with BufferDescriptor { label: None, size: 864, usage: VERTEX, mapped_at_creation: true } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862; [Log] INFO /home/mrk/private/rust/bevy/pipelined/bevy_render2/src/mesh/mesh/mod.rs:128 index buffer bytes Some([0, 0, 2, 0, 1, 0, 0, 0, 3, 0, 2, 0, 4, 0, 6, 0, 5, 0, 4, 0, 7, 0, 6, 0, 8, 0, 10, 0, 9, 0, 8, 0, 11, 0, 10, 0, 12, 0, 14, 0, 13, 0, 12, 0, 15, 0, 14, 0, 16, 0, 18, 0, 17, 0, 16, 0, 19, 0, 18, 0, 20, 0, 22, 0, 21, 0, 20, 0, 23, 0, 22, 0]), len: 72 (atari_antic.js, line 377) [Log] INFO Created buffer Valid((7, 1, Gl)) with BufferDescriptor { label: None, size: 72, usage: INDEX, mapped_at_creation: true } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862; [Log] INFO Created buffer Valid((8, 1, Gl)) with BufferDescriptor { label: None, size: 256, usage: COPY_DST | UNIFORM, mapped_at_creation: false } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862; [Log] INFO Created buffer Valid((9, 1, Gl)) with BufferDescriptor { label: None, size: 256, usage: COPY_DST | UNIFORM, mapped_at_creation: false } log.target = "wgpu_core::device"; (atari_antic.js, line 377) log.module_path = "wgpu_core::device"; log.file = "/home/mrk/private/wgpu/wgpu-core/src/device/mod.rs"; log.line = 2862;