do some initial grass rendering prep

This commit is contained in:
Tuomas Katajisto 2025-09-25 21:47:15 +03:00
parent 80bbe103e0
commit c9807cb38e
4 changed files with 350 additions and 210 deletions

View File

@ -293,8 +293,6 @@ draw_level_editor :: () {
size = size_of(type_of(positions)),
}));
print("Offset for trile: % is %\n", it.trileName, offset);
bindings : sg_bindings;
bindings.vertex_buffers[0] = trilegfx.vertex_buffer;
bindings.vertex_buffers[1] = trilegfx.normal_buffer;

View File

@ -13,5 +13,5 @@ draw_ground_plane :: (cam: *Camera, worldConfig: *World_Config = null) {
sg_apply_bindings(*gPipelines.plane.bind);
sg_apply_uniforms(UB_plane_vs_params, *(sg_range.{ ptr = *vs_params, size = size_of(type_of(vs_params)) }));
sg_apply_uniforms(UB_plane_world_config, *(sg_range.{ptr = *world_conf, size = size_of(type_of(world_conf))}));
sg_draw(0, 6, 10);
sg_draw(0, 6, 64);
}

View File

@ -62,7 +62,7 @@ Plane_World_Config :: struct {
void main()
{
vec3 _16 = position.xyz * 1000.0;
gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_16.x, (_16.y + 0.100000001490116119384765625) + (float(gl_InstanceID) * 0.004999999888241291046142578125), _16.z, 1.0);
gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_16.x, float(gl_InstanceID) * 0.00999999977648258209228515625, _16.z, 1.0);
pos = position;
idx = gl_InstanceID;
}
@ -89,17 +89,15 @@ vs_plane_source_glsl430 := u8.[
0x31,0x5d,0x2c,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,
0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,
0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,
0x63,0x34,0x28,0x5f,0x31,0x36,0x2e,0x78,0x2c,0x20,0x28,0x5f,0x31,0x36,0x2e,0x79,
0x20,0x2b,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,
0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,
0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,
0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,
0x34,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x32,0x34,0x31,0x32,0x39,0x31,
0x30,0x34,0x36,0x31,0x34,0x32,0x35,0x37,0x38,0x31,0x32,0x35,0x29,0x2c,0x20,0x5f,
0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73,
0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
0x63,0x34,0x28,0x5f,0x31,0x36,0x2e,0x78,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,
0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a,
0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,
0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,
0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,
0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x6c,0x5f,
0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
];
/*
#version 430
@ -122,28 +120,46 @@ vs_plane_source_glsl430 := u8.[
float time;
};
uniform plane_world_config _28;
uniform plane_world_config _84;
layout(location = 0) out vec4 frag_color;
layout(location = 0) in vec4 pos;
layout(location = 1) flat in int idx;
float random(vec2 st)
uint murmurHash12(inout uvec2 src)
{
return fract(sin(dot(st, vec2(12.98980045318603515625, 767.23297119140625))) * 43758.546875);
src *= uvec2(1540483477u);
src ^= (src >> uvec2(24u));
src *= uvec2(1540483477u);
uint _49 = ((3744546739u ^ src.x) * 1540483477u) ^ src.y;
uint _56 = (_49 ^ (_49 >> 13u)) * 1540483477u;
return _56 ^ (_56 >> 15u);
}
float hash12(vec2 src)
{
uvec2 param = floatBitsToUint(src);
uint _69 = murmurHash12(param);
return uintBitsToFloat((_69 & 8388607u) | 1065353216u) - 1.0;
}
void main()
{
if (_28.planeType == 1)
if (_84.planeType == 1)
{
frag_color = vec4(0.0, 0.0, 1.0, 1.0);
}
else
{
vec2 _54 = pos.xy * 10.0;
vec2 param = _54;
frag_color = vec4(vec3(length(vec2((fract(_54.x) * 2.0) - 1.0, (fract(_54.y) * 2.0) - 1.0))) * 0.100000001490116119384765625, 1.0);
vec2 _109 = pos.xz * 100000.0;
vec2 _110 = round(_109);
vec2 param = _110;
float _122 = hash12(param);
if (((_122 - (0.0625 * float(idx))) * 0.5) < length(_110 - _109))
{
discard;
}
frag_color = vec4(0.0, _122, 0.0, 1.0);
}
}
@ -171,42 +187,69 @@ fs_plane_source_glsl430 := u8.[
0x70,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69,
0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,
0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,
0x69,0x67,0x20,0x5f,0x32,0x38,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
0x69,0x67,0x20,0x5f,0x38,0x34,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,
0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,
0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,
0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,
0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,
0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x66,0x6c,0x61,0x74,0x20,0x69,
0x6e,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,0x0a,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x76,0x65,0x63,0x32,0x20,0x73,0x74,
0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,
0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x73,0x74,0x2c,
0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,
0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,
0x36,0x37,0x2e,0x32,0x33,0x32,0x39,0x37,0x31,0x31,0x39,0x31,0x34,0x30,0x36,0x32,
0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,
0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,
0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,
0x32,0x38,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,
0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,
0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,
0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,
0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x35,0x34,0x20,0x3d,0x20,
0x70,0x6f,0x73,0x2e,0x78,0x79,0x20,0x2a,0x20,0x31,0x30,0x2e,0x30,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,
0x6d,0x20,0x3d,0x20,0x5f,0x35,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,
0x63,0x34,0x28,0x76,0x65,0x63,0x33,0x28,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x76,
0x65,0x63,0x32,0x28,0x28,0x66,0x72,0x61,0x63,0x74,0x28,0x5f,0x35,0x34,0x2e,0x78,
0x29,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x2c,0x20,
0x28,0x66,0x72,0x61,0x63,0x74,0x28,0x5f,0x35,0x34,0x2e,0x79,0x29,0x20,0x2a,0x20,
0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,
0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,
0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x31,
0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00,
0x6e,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,0x0a,0x75,0x69,0x6e,0x74,
0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,0x31,0x32,0x28,0x69,0x6e,
0x6f,0x75,0x74,0x20,0x75,0x76,0x65,0x63,0x32,0x20,0x73,0x72,0x63,0x29,0x0a,0x7b,
0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,0x3d,0x20,0x75,0x76,0x65,0x63,
0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x5e,0x3d,0x20,0x28,0x73,0x72,0x63,0x20,
0x3e,0x3e,0x20,0x75,0x76,0x65,0x63,0x32,0x28,0x32,0x34,0x75,0x29,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,0x3d,0x20,0x75,0x76,0x65,0x63,0x32,
0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x34,0x39,0x20,0x3d,0x20,0x28,0x28,
0x33,0x37,0x34,0x34,0x35,0x34,0x36,0x37,0x33,0x39,0x75,0x20,0x5e,0x20,0x73,0x72,
0x63,0x2e,0x78,0x29,0x20,0x2a,0x20,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,
0x37,0x75,0x29,0x20,0x5e,0x20,0x73,0x72,0x63,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x35,0x36,0x20,0x3d,0x20,0x28,0x5f,0x34,0x39,
0x20,0x5e,0x20,0x28,0x5f,0x34,0x39,0x20,0x3e,0x3e,0x20,0x31,0x33,0x75,0x29,0x29,
0x20,0x2a,0x20,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x35,0x36,0x20,0x5e,
0x20,0x28,0x5f,0x35,0x36,0x20,0x3e,0x3e,0x20,0x31,0x35,0x75,0x29,0x3b,0x0a,0x7d,
0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x76,
0x65,0x63,0x32,0x20,0x73,0x72,0x63,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x75,
0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x42,0x69,0x74,0x73,0x54,0x6f,0x55,0x69,0x6e,0x74,0x28,0x73,0x72,0x63,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x36,0x39,0x20,
0x3d,0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,0x31,0x32,0x28,0x70,
0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,
0x6e,0x20,0x75,0x69,0x6e,0x74,0x42,0x69,0x74,0x73,0x54,0x6f,0x46,0x6c,0x6f,0x61,
0x74,0x28,0x28,0x5f,0x36,0x39,0x20,0x26,0x20,0x38,0x33,0x38,0x38,0x36,0x30,0x37,
0x75,0x29,0x20,0x7c,0x20,0x31,0x30,0x36,0x35,0x33,0x35,0x33,0x32,0x31,0x36,0x75,
0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,
0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,
0x20,0x28,0x5f,0x38,0x34,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x20,
0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,
0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,
0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,
0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x30,
0x39,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,
0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,
0x65,0x63,0x32,0x20,0x5f,0x31,0x31,0x30,0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,
0x28,0x5f,0x31,0x30,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x31,0x31,
0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x5f,0x31,0x32,0x32,0x20,0x3d,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x70,
0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,
0x66,0x20,0x28,0x28,0x28,0x5f,0x31,0x32,0x32,0x20,0x2d,0x20,0x28,0x30,0x2e,0x30,
0x36,0x32,0x35,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x64,0x78,0x29,
0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x3c,0x20,0x6c,0x65,0x6e,0x67,
0x74,0x68,0x28,0x5f,0x31,0x31,0x30,0x20,0x2d,0x20,0x5f,0x31,0x30,0x39,0x29,0x29,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,
0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x32,0x32,0x2c,0x20,0x30,
0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,
0x7d,0x0a,0x0a,0x00,
];
/*
#version 300 es
@ -219,7 +262,7 @@ fs_plane_source_glsl430 := u8.[
void main()
{
vec3 _16 = position.xyz * 1000.0;
gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_16.x, (_16.y + 0.100000001490116119384765625) + (float(gl_InstanceID) * 0.004999999888241291046142578125), _16.z, 1.0);
gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_16.x, float(gl_InstanceID) * 0.00999999977648258209228515625, _16.z, 1.0);
pos = position;
idx = gl_InstanceID;
}
@ -244,17 +287,14 @@ vs_plane_source_glsl300es := u8.[
0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,
0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,
0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x31,0x36,0x2e,
0x78,0x2c,0x20,0x28,0x5f,0x31,0x36,0x2e,0x79,0x20,0x2b,0x20,0x30,0x2e,0x31,0x30,
0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,
0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,
0x6f,0x61,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,
0x44,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x34,0x39,0x39,0x39,0x39,0x39,0x39,
0x38,0x38,0x38,0x32,0x34,0x31,0x32,0x39,0x31,0x30,0x34,0x36,0x31,0x34,0x32,0x35,
0x37,0x38,0x31,0x32,0x35,0x29,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,
0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,
0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x64,0x78,
0x20,0x3d,0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,
0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
0x78,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,
0x61,0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,
0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,
0x32,0x32,0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,
0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,
0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,
0x65,0x49,0x44,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
];
/*
#version 300 es
@ -279,28 +319,46 @@ vs_plane_source_glsl300es := u8.[
highp float time;
};
uniform plane_world_config _28;
uniform plane_world_config _84;
layout(location = 0) out highp vec4 frag_color;
in highp vec4 pos;
flat in int idx;
highp float random(highp vec2 st)
uint murmurHash12(inout uvec2 src)
{
return fract(sin(dot(st, vec2(12.98980045318603515625, 767.23297119140625))) * 43758.546875);
src *= uvec2(1540483477u);
src ^= (src >> uvec2(24u));
src *= uvec2(1540483477u);
uint _49 = ((3744546739u ^ src.x) * 1540483477u) ^ src.y;
uint _56 = (_49 ^ (_49 >> 13u)) * 1540483477u;
return _56 ^ (_56 >> 15u);
}
highp float hash12(highp vec2 src)
{
uvec2 param = floatBitsToUint(src);
uint _69 = murmurHash12(param);
return uintBitsToFloat((_69 & 8388607u) | 1065353216u) - 1.0;
}
void main()
{
if (_28.planeType == 1)
if (_84.planeType == 1)
{
frag_color = vec4(0.0, 0.0, 1.0, 1.0);
}
else
{
highp vec2 _54 = pos.xy * 10.0;
highp vec2 param = _54;
frag_color = vec4(vec3(length(vec2((fract(_54.x) * 2.0) - 1.0, (fract(_54.y) * 2.0) - 1.0))) * 0.100000001490116119384765625, 1.0);
highp vec2 _109 = pos.xz * 100000.0;
highp vec2 _110 = round(_109);
highp vec2 param = _110;
highp float _122 = hash12(param);
if (((_122 - (0.0625 * float(idx))) * 0.5) < length(_110 - _109))
{
discard;
}
frag_color = vec4(0.0, _122, 0.0, 1.0);
}
}
@ -335,42 +393,69 @@ fs_plane_source_glsl300es := u8.[
0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,
0x72,0x6d,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,
0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x32,0x38,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,
0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x38,0x34,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,
0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,
0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,
0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68,
0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x66,
0x6c,0x61,0x74,0x20,0x69,0x6e,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,
0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,
0x64,0x6f,0x6d,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x73,
0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,
0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x73,0x74,
0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,
0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,
0x37,0x36,0x37,0x2e,0x32,0x33,0x32,0x39,0x37,0x31,0x31,0x39,0x31,0x34,0x30,0x36,
0x32,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,
0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,
0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,
0x5f,0x32,0x38,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,
0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,
0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,
0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,
0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,
0x0a,0x75,0x69,0x6e,0x74,0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,
0x31,0x32,0x28,0x69,0x6e,0x6f,0x75,0x74,0x20,0x75,0x76,0x65,0x63,0x32,0x20,0x73,
0x72,0x63,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,0x3d,
0x20,0x75,0x76,0x65,0x63,0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,
0x37,0x75,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x5e,0x3d,0x20,
0x28,0x73,0x72,0x63,0x20,0x3e,0x3e,0x20,0x75,0x76,0x65,0x63,0x32,0x28,0x32,0x34,
0x75,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,0x3d,0x20,
0x75,0x76,0x65,0x63,0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,
0x75,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x34,0x39,
0x20,0x3d,0x20,0x28,0x28,0x33,0x37,0x34,0x34,0x35,0x34,0x36,0x37,0x33,0x39,0x75,
0x20,0x5e,0x20,0x73,0x72,0x63,0x2e,0x78,0x29,0x20,0x2a,0x20,0x31,0x35,0x34,0x30,
0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x29,0x20,0x5e,0x20,0x73,0x72,0x63,0x2e,0x79,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x35,0x36,0x20,0x3d,
0x20,0x28,0x5f,0x34,0x39,0x20,0x5e,0x20,0x28,0x5f,0x34,0x39,0x20,0x3e,0x3e,0x20,
0x31,0x33,0x75,0x29,0x29,0x20,0x2a,0x20,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,
0x37,0x37,0x75,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,
0x5f,0x35,0x36,0x20,0x5e,0x20,0x28,0x5f,0x35,0x36,0x20,0x3e,0x3e,0x20,0x31,0x35,
0x75,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x68,0x69,0x67,0x68,0x70,0x20,
0x76,0x65,0x63,0x32,0x20,0x73,0x72,0x63,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,
0x75,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x42,0x69,0x74,0x73,0x54,0x6f,0x55,0x69,0x6e,0x74,0x28,0x73,0x72,
0x63,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x36,0x39,
0x20,0x3d,0x20,0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,0x31,0x32,0x28,
0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,
0x72,0x6e,0x20,0x75,0x69,0x6e,0x74,0x42,0x69,0x74,0x73,0x54,0x6f,0x46,0x6c,0x6f,
0x61,0x74,0x28,0x28,0x5f,0x36,0x39,0x20,0x26,0x20,0x38,0x33,0x38,0x38,0x36,0x30,
0x37,0x75,0x29,0x20,0x7c,0x20,0x31,0x30,0x36,0x35,0x33,0x35,0x33,0x32,0x31,0x36,
0x75,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,
0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,
0x66,0x20,0x28,0x5f,0x38,0x34,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,
0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,
0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,
0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,
0x65,0x63,0x32,0x20,0x5f,0x31,0x30,0x39,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,
0x7a,0x20,0x2a,0x20,0x31,0x30,0x30,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,
0x20,0x5f,0x35,0x34,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x79,0x20,0x2a,0x20,
0x31,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,
0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,
0x20,0x5f,0x35,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,
0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,
0x76,0x65,0x63,0x33,0x28,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x76,0x65,0x63,0x32,
0x28,0x28,0x66,0x72,0x61,0x63,0x74,0x28,0x5f,0x35,0x34,0x2e,0x78,0x29,0x20,0x2a,
0x20,0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x2c,0x20,0x28,0x66,0x72,
0x61,0x63,0x74,0x28,0x5f,0x35,0x34,0x2e,0x79,0x29,0x20,0x2a,0x20,0x32,0x2e,0x30,
0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,
0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00,
0x20,0x5f,0x31,0x31,0x30,0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,0x28,0x5f,0x31,
0x30,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,
0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,
0x5f,0x31,0x31,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,
0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x32,0x20,0x3d,
0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x28,0x5f,0x31,
0x32,0x32,0x20,0x2d,0x20,0x28,0x30,0x2e,0x30,0x36,0x32,0x35,0x20,0x2a,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x28,0x69,0x64,0x78,0x29,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,
0x35,0x29,0x20,0x3c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x31,0x31,0x30,
0x20,0x2d,0x20,0x5f,0x31,0x30,0x39,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,
0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,
0x2c,0x20,0x5f,0x31,0x32,0x32,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00,
];
/*
#include <metal_stdlib>
@ -399,7 +484,7 @@ fs_plane_source_glsl300es := u8.[
{
main0_out out = {};
float3 _16 = in.position.xyz * 1000.0;
out.gl_Position = _28.mvp * float4(_16.x, (_16.y + 0.100000001490116119384765625) + (float(int(gl_InstanceIndex)) * 0.004999999888241291046142578125), _16.z, 1.0);
out.gl_Position = _28.mvp * float4(_16.x, float(int(gl_InstanceIndex)) * 0.00999999977648258209228515625, _16.z, 1.0);
out.pos = in.position;
out.idx = int(gl_InstanceIndex);
return out;
@ -441,20 +526,17 @@ vs_plane_source_metal_macos := u8.[
0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,
0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x32,0x38,0x2e,
0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x31,0x36,
0x2e,0x78,0x2c,0x20,0x28,0x5f,0x31,0x36,0x2e,0x79,0x20,0x2b,0x20,0x30,0x2e,0x31,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,
0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x66,
0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,
0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65,0x78,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,
0x30,0x30,0x34,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x32,0x34,0x31,0x32,
0x39,0x31,0x30,0x34,0x36,0x31,0x34,0x32,0x35,0x37,0x38,0x31,0x32,0x35,0x29,0x2c,
0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x6f,0x75,0x74,0x2e,0x70,0x6f,0x73,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,
0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,
0x2e,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,
0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65,0x78,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,
0x0a,0x00,
0x2e,0x78,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x28,0x67,0x6c,
0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65,0x78,0x29,0x29,
0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,
0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,0x38,0x35,0x31,0x35,0x36,
0x32,0x35,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x70,0x6f,0x73,0x20,0x3d,0x20,0x69,
0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x6f,0x75,0x74,0x2e,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x67,0x6c,
0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65,0x78,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,
0x0a,0x7d,0x0a,0x0a,0x00,
];
/*
#pragma clang diagnostic ignored "-Wmissing-prototypes"
@ -490,26 +572,46 @@ vs_plane_source_metal_macos := u8.[
struct main0_in
{
float4 pos [[user(locn0)]];
int idx [[user(locn1)]];
};
static inline __attribute__((always_inline))
float random(thread const float2& st)
uint murmurHash12(thread uint2& src)
{
return fract(sin(dot(st, float2(12.98980045318603515625, 767.23297119140625))) * 43758.546875);
src *= uint2(1540483477u);
src ^= (src >> uint2(24u));
src *= uint2(1540483477u);
uint _49 = ((3744546739u ^ src.x) * 1540483477u) ^ src.y;
uint _56 = (_49 ^ (_49 >> 13u)) * 1540483477u;
return _56 ^ (_56 >> 15u);
}
fragment main0_out main0(main0_in in [[stage_in]], constant plane_world_config& _28 [[buffer(0)]])
static inline __attribute__((always_inline))
float hash12(thread const float2& src)
{
uint2 param = as_type<uint2>(src);
uint _69 = murmurHash12(param);
return as_type<float>((_69 & 8388607u) | 1065353216u) - 1.0;
}
fragment main0_out main0(main0_in in [[stage_in]], constant plane_world_config& _84 [[buffer(0)]])
{
main0_out out = {};
if (_28.planeType == 1)
if (_84.planeType == 1)
{
out.frag_color = float4(0.0, 0.0, 1.0, 1.0);
}
else
{
float2 _54 = in.pos.xy * 10.0;
float2 param = _54;
out.frag_color = float4(float3(length(float2((fract(_54.x) * 2.0) - 1.0, (fract(_54.y) * 2.0) - 1.0))) * 0.100000001490116119384765625, 1.0);
float2 _109 = in.pos.xz * 100000.0;
float2 _110 = round(_109);
float2 param = _110;
float _122 = hash12(param);
if (((_122 - (0.0625 * float(in.idx))) * 0.5) < length(_110 - _109))
{
discard_fragment();
}
out.frag_color = float4(0.0, _122, 0.0, 1.0);
}
return out;
}
@ -551,49 +653,81 @@ fs_plane_source_metal_macos := u8.[
0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,
0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x75,0x73,
0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,
0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,
0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,
0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,
0x6f,0x61,0x74,0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x74,0x68,0x72,0x65,0x61,
0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,
0x73,0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,
0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x73,
0x74,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,0x39,
0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,
0x35,0x2c,0x20,0x37,0x36,0x37,0x2e,0x32,0x33,0x32,0x39,0x37,0x31,0x31,0x39,0x31,
0x34,0x30,0x36,0x32,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,
0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,
0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,
0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,
0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,
0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,
0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x32,0x38,
0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,
0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,
0x20,0x28,0x5f,0x32,0x38,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x20,
0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,
0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x2c,
0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,
0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x32,0x20,0x5f,0x35,0x34,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,
0x73,0x2e,0x78,0x79,0x20,0x2a,0x20,0x31,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,
0x6d,0x20,0x3d,0x20,0x5f,0x35,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,
0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,
0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x28,0x66,
0x72,0x61,0x63,0x74,0x28,0x5f,0x35,0x34,0x2e,0x78,0x29,0x20,0x2a,0x20,0x32,0x2e,
0x30,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x2c,0x20,0x28,0x66,0x72,0x61,0x63,0x74,
0x28,0x5f,0x35,0x34,0x2e,0x79,0x29,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x20,0x2d,
0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,
0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,
0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,
0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,
0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,
0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,
0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x75,0x69,0x6e,0x74,0x20,
0x6d,0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,0x31,0x32,0x28,0x74,0x68,0x72,
0x65,0x61,0x64,0x20,0x75,0x69,0x6e,0x74,0x32,0x26,0x20,0x73,0x72,0x63,0x29,0x0a,
0x7b,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,0x3d,0x20,0x75,0x69,0x6e,
0x74,0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x5e,0x3d,0x20,0x28,0x73,0x72,0x63,
0x20,0x3e,0x3e,0x20,0x75,0x69,0x6e,0x74,0x32,0x28,0x32,0x34,0x75,0x29,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x20,0x2a,0x3d,0x20,0x75,0x69,0x6e,0x74,
0x32,0x28,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x34,0x39,0x20,0x3d,0x20,0x28,
0x28,0x33,0x37,0x34,0x34,0x35,0x34,0x36,0x37,0x33,0x39,0x75,0x20,0x5e,0x20,0x73,
0x72,0x63,0x2e,0x78,0x29,0x20,0x2a,0x20,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,
0x37,0x37,0x75,0x29,0x20,0x5e,0x20,0x73,0x72,0x63,0x2e,0x79,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x35,0x36,0x20,0x3d,0x20,0x28,0x5f,0x34,
0x39,0x20,0x5e,0x20,0x28,0x5f,0x34,0x39,0x20,0x3e,0x3e,0x20,0x31,0x33,0x75,0x29,
0x29,0x20,0x2a,0x20,0x31,0x35,0x34,0x30,0x34,0x38,0x33,0x34,0x37,0x37,0x75,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x35,0x36,0x20,
0x5e,0x20,0x28,0x5f,0x35,0x36,0x20,0x3e,0x3e,0x20,0x31,0x35,0x75,0x29,0x3b,0x0a,
0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,
0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,
0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,
0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x74,0x68,0x72,
0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,
0x26,0x20,0x73,0x72,0x63,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,
0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x74,0x79,
0x70,0x65,0x3c,0x75,0x69,0x6e,0x74,0x32,0x3e,0x28,0x73,0x72,0x63,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x5f,0x36,0x39,0x20,0x3d,0x20,0x6d,
0x75,0x72,0x6d,0x75,0x72,0x48,0x61,0x73,0x68,0x31,0x32,0x28,0x70,0x61,0x72,0x61,
0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,
0x73,0x5f,0x74,0x79,0x70,0x65,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x28,0x28,0x5f,
0x36,0x39,0x20,0x26,0x20,0x38,0x33,0x38,0x38,0x36,0x30,0x37,0x75,0x29,0x20,0x7c,
0x20,0x31,0x30,0x36,0x35,0x33,0x35,0x33,0x32,0x31,0x36,0x75,0x29,0x20,0x2d,0x20,
0x31,0x2e,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,
0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,
0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,
0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,
0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,
0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x38,0x34,0x20,0x5b,0x5b,0x62,0x75,
0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,
0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,
0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x38,0x34,
0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,
0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,
0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,
0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,
0x5f,0x31,0x30,0x39,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x7a,
0x20,0x2a,0x20,0x31,0x30,0x30,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x31,0x30,
0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,0x28,0x5f,0x31,0x30,0x39,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,
0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x31,0x31,0x30,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x32,0x20,
0x3d,0x20,0x68,0x61,0x73,0x68,0x31,0x32,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x28,0x5f,
0x31,0x32,0x32,0x20,0x2d,0x20,0x28,0x30,0x2e,0x30,0x36,0x32,0x35,0x20,0x2a,0x20,
0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x2e,0x69,0x64,0x78,0x29,0x29,0x29,0x20,
0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x3c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,
0x5f,0x31,0x31,0x30,0x20,0x2d,0x20,0x5f,0x31,0x30,0x39,0x29,0x29,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66,0x72,0x61,0x67,
0x6d,0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,
0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x32,0x32,0x2c,0x20,0x30,0x2e,0x30,
0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,
0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,
0x0a,0x00,
];
plane_shader_desc :: (backend: sg_backend) -> sg_shader_desc {
desc: sg_shader_desc;
@ -617,46 +751,46 @@ plane_shader_desc :: (backend: sg_backend) -> sg_shader_desc {
desc.uniform_blocks[1].size = 144;
desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_28.skyBase";
desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_84.skyBase";
desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_28.skyTop";
desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_84.skyTop";
desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_28.sunDisk";
desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_84.sunDisk";
desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_28.horizonHalo";
desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_84.horizonHalo";
desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_28.sunHalo";
desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_84.sunHalo";
desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_28.sunLightColor";
desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_84.sunLightColor";
desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_28.sunPosition";
desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_84.sunPosition";
desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_28.sunIntensity";
desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_84.sunIntensity";
desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_28.skyIntensity";
desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_84.skyIntensity";
desc.uniform_blocks[1].glsl_uniforms[9].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_28.hasClouds";
desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_84.hasClouds";
desc.uniform_blocks[1].glsl_uniforms[10].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_28.hasPlane";
desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_84.hasPlane";
desc.uniform_blocks[1].glsl_uniforms[11].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_28.planeHeight";
desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_84.planeHeight";
desc.uniform_blocks[1].glsl_uniforms[12].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_28.planeType";
desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_84.planeType";
desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_28.time";
desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_84.time";
case .GLES3;
desc.vertex_func.source = xx *vs_plane_source_glsl300es;
desc.vertex_func.entry = "main";
@ -675,46 +809,46 @@ plane_shader_desc :: (backend: sg_backend) -> sg_shader_desc {
desc.uniform_blocks[1].size = 144;
desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_28.skyBase";
desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_84.skyBase";
desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_28.skyTop";
desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_84.skyTop";
desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_28.sunDisk";
desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_84.sunDisk";
desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_28.horizonHalo";
desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_84.horizonHalo";
desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_28.sunHalo";
desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_84.sunHalo";
desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_28.sunLightColor";
desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_84.sunLightColor";
desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3;
desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_28.sunPosition";
desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_84.sunPosition";
desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_28.sunIntensity";
desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_84.sunIntensity";
desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_28.skyIntensity";
desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_84.skyIntensity";
desc.uniform_blocks[1].glsl_uniforms[9].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_28.hasClouds";
desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_84.hasClouds";
desc.uniform_blocks[1].glsl_uniforms[10].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_28.hasPlane";
desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_84.hasPlane";
desc.uniform_blocks[1].glsl_uniforms[11].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_28.planeHeight";
desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_84.planeHeight";
desc.uniform_blocks[1].glsl_uniforms[12].type = .INT;
desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_28.planeType";
desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_84.planeType";
desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT;
desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0;
desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_28.time";
desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_84.time";
case .METAL_MACOS;
desc.vertex_func.source = xx *vs_plane_source_metal_macos;
desc.vertex_func.entry = "main0";

View File

@ -12,7 +12,7 @@ out flat int idx;
void main() {
vec3 multisize = vec3(position.xyz * 1000.0);
gl_Position = mvp * (vec4(multisize.x, multisize.y + 0.1 + float(gl_InstanceIndex) * 0.005, multisize.z, 1.0));
gl_Position = mvp * (vec4(multisize.x, 0.0 + float(gl_InstanceIndex) * 0.01, multisize.z, 1.0));
pos = position;
idx = gl_InstanceIndex;
}
@ -24,8 +24,18 @@ in vec4 pos;
in flat int idx;
out vec4 frag_color;
float random (vec2 st) {
return fract(sin(dot(st.xy, vec2(12.9898,767.233)))* 43758.5453123);
uint murmurHash12(uvec2 src) {
const uint M = 0x5bd1e995u;
uint h = 1190494759u;
src *= M; src ^= src>>24u; src *= M;
h *= M; h ^= src.x; h *= M; h ^= src.y;
h ^= h>>13u; h *= M; h ^= h>>15u;
return h;
}
float hash12(vec2 src) {
uint h = murmurHash12(floatBitsToUint(src));
return uintBitsToFloat(h & 0x007fffffu | 0x3f800000u) - 1.0;
}
layout(binding=1) uniform plane_world_config {
@ -53,22 +63,20 @@ void main() {
if(planeType == 1) {
frag_color = vec4(0.0, 0.0, 1.0, 1.0);
} else {
float density = 10.0;
vec2 uv = pos.xy * density;
vec2 localUV = vec2(fract(uv.x) * 2.0 - 1.0, fract(uv.y) * 2.0 - 1.0);
float localDistanceFromCenter = length(localUV);
float rand = random(uv);
float density = 100000.0;
vec2 uv = round(pos.xz * density);
float distanceFromCenter = length(uv - (pos.xz * density));
float rand = hash12(uv);
float h = (1.0 / 16.0) * idx;
bool outsideThickness = localDistanceFromCenter > (0.1 * (rand - pos.y));
if(outsideThickness) {
// discard;
float thickness = 0.5;
if((rand - h) * thickness < distanceFromCenter) {
discard;
}
frag_color = vec4(vec3(localDistanceFromCenter) * 0.1, 1.0);
frag_color = vec4(0.0, rand, 0.0, 1.0);
}
}
@end