Commit Graph

38 Commits

Author SHA1 Message Date
ice_iix fa2e5e8bdb chunk_builder: single-threaded on wasm (#458)
Refactor the chunk builder to use multithreading on native, but no threads on
wasm, at least until we have web workers or wasm threads. With this change
and the shader fix, chunks now render on Chrome (albeit with no textures).
Another step towards 🕸️ Web support #446.

* Single-threaded chunk builder

* shaders: chunk_frag: consistently enable outputs, fixes GL_INVALID_OPERATION on WebGL
2021-01-07 17:26:58 -08:00
iceiix 22f6c83d59
WebGL fixes after disabling threaded chunk builder (#451)
At this point, the UI renders in the browser through WebGL, with no GL errors.
Progress towards #446 🕸️ Web support

* main: enable render loop on wasm, disable events_loop on wasm for now
Allow for testing rendering on WebGL

* chunk_builder: disable on wasm due to no threads on wasm
Chunks will not be correctly rendered, but other parts of the program now can be tested instead of crashing in std::thread

* chunk_frag: glBindFragDataLocation is only on native, WebGL 2 uses in-shader specification layout(location=), which works on native in OpenGL 4.1 but we're on OpenGL 3.2 - see https://www.khronos.org/opengl/wiki/Fragment_Shader#Output_buffers

* std_or_web: always fail File::open() to avoid servers.json empty string JSON parse failing

* www: update installation instructions

* render: fix apparent TEXTURE_MAX_LEVEL -> TEXTURE_MAG_FILTER typo

* render: correct type for internalFormat DEPTH_COMPONENT24
Valid combinations of format, type, and internalFormat are listed at https://www.khronos.org/registry/OpenGL/specs/es/3.0/es_spec_3.0.pdf#page=124&zoom=100,168,206. We had UNSIGNED_BYTE for DEPTH_COMPONENT24, but only UNSIGNED_INT is a valid type for this internal format.

Fixes texImage: Mismatched internalFormat and format/type: 0x81a6 and 0x1902/0x1401
and fixes the subsequent GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT error.

* render: gl::MULTISAMPLE (0x809d) is not available on WebGL
Fixes WebGL warning: enabled: cap: Invalid enum value <enum 0x809d> 0.bootstrap.js line 11 > eval:851:21

* gl: replace set_float_multi_raw with a safer set_float_multi
Removes use of passing raw pointers in set_float_multi_raw parameters
Instead, casts raw pointers to flatten, similar to set_matrix_multi
Fixes uniform setter: (uniform colorMul[0]) values length (1) must be a positive integer multiple of size of <enum 0x8b52>.

* render: model: send BYTE to id attrib, fixes type mismatch
Fixes drawElementsInstanced: Vertex attrib 0 requires data of type INT, but is being supplied with type UINT
2020-12-31 14:35:30 -08:00
iceiix b7bd59f75f
Update to Rust 1.49.0 (#457)
* Update to Rust 1.49.0

* Fix clippy::manual_range_contains warnings
2020-12-31 09:51:46 -08:00
ice_iix 98dff0b390 Fix redundant clones 2020-06-29 18:48:07 -07:00
ice_iix c3038f82ce Remove redundant imports (single_component_path_imports) 2020-06-29 18:01:02 -07:00
iceiix 518b6a07f8
Reformat all source with cargo fmt (#335) 2020-06-21 12:17:24 -07:00
ice_iix b307843d2b Change to PCG random number generator algorithm
See http://www.pcg-random.org/ for benefits of PCG over xorshift
Updates #236 #183
2020-01-05 10:01:44 -08:00
ice_iix 19948ff397 Fix redundant imports on rustc 0.35.0. Fixes #175 2019-05-30 18:13:54 -07:00
ice_iix b1cae32eed Update to rand 0.6.5 and migrate off deprecated methods. Closes #81
* Import from rand_xorshift crate

* Use shuffle/choose from SliceRandom trait

See https://rust-random.github.io/book/update-0.6.html
2019-05-08 19:32:05 -07:00
ice_iix 77cd4ecf35 Use field init shorthand, instead of x:x, just x,
https://rust-lang-nursery.github.io/edition-guide/rust-2018/data-types/field-init-shorthand.html

find src -name '*.rs' -exec perl -pe 's/\b(\w+): \1,/$1,/g' -i {} \;
2018-11-04 13:43:30 -08:00
ice_iix a40cd43a2e Update to use crate:: for current crate, for Rust 2018 edition
From `cargo fix --edition`, see https://rust-lang-nursery.github.io/edition-guide/print.html#the-crate-keyword-refers-to-the-current-crate
2018-11-04 12:06:00 -08:00
ice_iix d2b59fbd10 Update to rand 0.5.5 for https://github.com/iceiix/steven/issues/4
Useful guide: https://github.com/rust-random/rand/blob/master/UPDATING.md
2018-09-30 19:05:20 -07:00
llogiq 5e0c041a71 Fixed another batch of clippy warnings
Those are mostly readability-related. Also did a cargo update.
2016-09-15 15:15:52 +01:00
Thinkofname 98ecd348c6 Replace usages of x,y,z for block positions with Position 2016-04-03 20:53:40 +01:00
llogiq 0b8cc33c17 Fixed various clippy warnings 2016-04-03 01:26:31 +01:00
Thinkofname 480b7afd3b Multipart model support 2016-03-31 14:59:40 +01:00
Thinkofname 357c695a3a Fix some lock ordering issues 2016-03-29 20:54:08 +01:00
Thinkofname 0855424e52 Move Direction and BlockVertex into better locations 2016-03-26 11:46:37 +00:00
Thinkofname be49342dbc Don't use recursion for the flood fill 2016-03-25 21:23:27 +00:00
Thinkofname 3738c5a0c0 Liquid rendering 2016-03-25 09:47:39 +00:00
Thinkofname d7bc0b2b0f Transparent renderering 2016-03-25 01:17:03 +00:00
Thinkofname de673f1ee1 Implement better chunk culling 2016-03-24 23:27:22 +00:00
Thinkofname 70ccd5cd3d Tidy up chunk rendering 2016-03-24 21:13:24 +00:00
Thinkofname 99a500b4dd Implement biome colors 2016-03-24 19:39:14 +00:00
Thinkofname 12b1dd6445 Initial block model support 2016-03-24 15:39:57 +00:00
Thinkofname baeb6b94aa Rework block system 2016-03-23 21:10:40 +00:00
Thinkofname 2969dfe799 Failed attempt at working with the block system 2016-03-23 18:36:52 +00:00
Thinkofname 229fafbd9c Pool chunk builder buffers 2016-03-21 23:36:43 +00:00
Thinkofname f021ae69d9 Use 8 threads instead of 4 for chunk building 2016-03-21 23:25:27 +00:00
Thinkofname e6477bd186 Spectator style movement + chunk unloading 2016-03-21 22:34:57 +00:00
Thinkofname 8d141b1310 Implement block shading 2016-03-21 19:53:00 +00:00
Thinkofname 217ec33413 Render chunks nearest to the player first 2016-03-21 16:51:19 +00:00
Thinkofname 99caa01032 Implement basic culling 2016-03-21 16:36:50 +00:00
Thinkofname ce1c286801 Implement chunk loading 2016-03-21 14:05:13 +00:00
Thinkofname 4524cb31e2 Fix panics on shutdown (Fixes #15) 2016-03-20 12:21:10 +00:00
Thinkofname 189c063f67 First attempt at block handling rework 2016-03-20 00:29:35 +00:00
Thinkofname 6bee18b68c Initial rendering implementation 2016-03-19 18:09:10 +00:00
Thinkofname ad81ef8f17 Basic chunk building (not rendering) 2016-03-19 16:32:13 +00:00