blob: 78ce090d77690825f72b96b157196e25705c7063 [file] [log] [blame]
//
// vertex_main
//
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
void asinh_468a48() {
float16_t arg_0 = 0.0hf;
float16_t res = asinh(arg_0);
}
vec4 vertex_main_inner() {
asinh_468a48();
return vec4(0.0f);
}
void main() {
gl_Position = vertex_main_inner();
gl_Position.y = -(gl_Position.y);
gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
//
// fragment_main
//
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
precision highp float;
precision highp int;
void asinh_468a48() {
float16_t arg_0 = 0.0hf;
float16_t res = asinh(arg_0);
}
void main() {
asinh_468a48();
}
//
// rgba32uintin
//
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
void asinh_468a48() {
float16_t arg_0 = 0.0hf;
float16_t res = asinh(arg_0);
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
asinh_468a48();
}
//
// vs_main
//
#version 310 es
struct RenderParams {
mat4 modelViewProjectionMatrix;
vec3 right;
uint tint_pad_0;
vec3 up;
uint tint_pad_1;
};
struct VertexOutput {
vec4 position;
vec4 color;
vec2 quad_pos;
};
struct VertexInput {
vec3 position;
vec4 color;
vec2 quad_pos;
};
layout(binding = 5, std140)
uniform v_render_params_block_ubo {
RenderParams inner;
} v;
layout(location = 0) in vec3 vs_main_loc0_Input;
layout(location = 1) in vec4 vs_main_loc1_Input;
layout(location = 2) in vec2 vs_main_loc2_Input;
layout(location = 0) out vec4 tint_interstage_location0;
layout(location = 1) out vec2 tint_interstage_location1;
VertexOutput vs_main_inner(VertexInput v_1) {
vec3 quad_pos = (mat2x3(v.inner.right, v.inner.up) * v_1.quad_pos);
vec3 position = (v_1.position - (quad_pos + 0.00999999977648258209f));
VertexOutput v_2 = VertexOutput(vec4(0.0f), vec4(0.0f), vec2(0.0f));
mat4 v_3 = v.inner.modelViewProjectionMatrix;
v_2.position = (v_3 * vec4(position, 1.0f));
v_2.color = v_1.color;
v_2.quad_pos = v_1.quad_pos;
return v_2;
}
void main() {
VertexOutput v_4 = vs_main_inner(VertexInput(vs_main_loc0_Input, vs_main_loc1_Input, vs_main_loc2_Input));
gl_Position = v_4.position;
gl_Position.y = -(gl_Position.y);
gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
tint_interstage_location0 = v_4.color;
tint_interstage_location1 = v_4.quad_pos;
gl_PointSize = 1.0f;
}
//
// simulate
//
#version 310 es
struct SimulationParams {
float deltaTime;
uint tint_pad_0;
uint tint_pad_1;
uint tint_pad_2;
vec4 seed;
};
struct Particle {
vec3 position;
float lifetime;
vec4 color;
vec2 velocity;
uint tint_pad_0;
uint tint_pad_1;
};
vec2 rand_seed = vec2(0.0f);
layout(binding = 0, std140)
uniform sim_params_block_1_ubo {
SimulationParams inner;
} v;
layout(binding = 1, std430)
buffer Particles_1_ssbo {
Particle particles[];
} data;
void tint_store_and_preserve_padding(uint target_indices[1], Particle value_param) {
data.particles[target_indices[0u]].position = value_param.position;
data.particles[target_indices[0u]].lifetime = value_param.lifetime;
data.particles[target_indices[0u]].color = value_param.color;
data.particles[target_indices[0u]].velocity = value_param.velocity;
}
void simulate_inner(uvec3 GlobalInvocationID) {
vec2 v_1 = v.inner.seed.xy;
vec2 v_2 = (v_1 * vec2(GlobalInvocationID.xy));
rand_seed = (v_2 * v.inner.seed.zw);
uint idx = GlobalInvocationID.x;
uint v_3 = min(idx, (uint(data.particles.length()) - 1u));
Particle particle = data.particles[v_3];
uint v_4 = min(idx, (uint(data.particles.length()) - 1u));
Particle v_5 = particle;
tint_store_and_preserve_padding(uint[1](v_4), v_5);
}
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
void main() {
simulate_inner(gl_GlobalInvocationID);
}
//
// export_level
//
#version 310 es
struct UBO {
uint width;
};
layout(binding = 3, std140)
uniform ubo_block_1_ubo {
UBO inner;
} v;
layout(binding = 4, std430)
buffer Buffer_1_ssbo {
float weights[];
} buf_in;
layout(binding = 5, std430)
buffer Buffer_2_ssbo {
float weights[];
} buf_out;
layout(binding = 7, rgba8) uniform highp writeonly image2D tex_out;
float tint_float_modulo(float x, float y) {
return (x - (y * trunc((x / y))));
}
void export_level_inner(uvec3 coord) {
if (all(lessThan(coord.xy, uvec2(uvec2(imageSize(tex_out)))))) {
uint dst_offset = (coord.x << ((coord.y * v.inner.width) & 31u));
uint src_offset = ((coord.x - 2u) + ((coord.y >> (2u & 31u)) * v.inner.width));
uint v_1 = min((src_offset << (0u & 31u)), (uint(buf_in.weights.length()) - 1u));
float a = buf_in.weights[v_1];
uint v_2 = min((src_offset + 1u), (uint(buf_in.weights.length()) - 1u));
float b = buf_in.weights[v_2];
uint v_3 = ((src_offset + 1u) + v.inner.width);
uint v_4 = min(v_3, (uint(buf_in.weights.length()) - 1u));
float c = buf_in.weights[v_4];
uint v_5 = ((src_offset + 1u) + v.inner.width);
uint v_6 = min(v_5, (uint(buf_in.weights.length()) - 1u));
float d = buf_in.weights[v_6];
float sum = dot(vec4(a, b, c, d), vec4(1.0f));
uint v_7 = min(dst_offset, (uint(buf_out.weights.length()) - 1u));
buf_out.weights[v_7] = tint_float_modulo(sum, 4.0f);
vec4 probabilities = (vec4(a, (a * b), ((a / b) + c), sum) + max(sum, 0.0f));
imageStore(tex_out, ivec2(coord.xy), probabilities);
}
}
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
void main() {
export_level_inner(gl_GlobalInvocationID);
}