• What are you working on? v66 - February 2017
    558 replies, posted
[QUOTE=phygon;51832216]Also, I hate to do this but it worked extremely well last time (when I announced it before it was approved like a dumbass); if just a few of you could lend me your power to get the ball rolling on this (nothing crazy), I'd be EXTREMELY appreciative. Getting posts out of the new section on the unity subforum is extremely hard and, well, I'd like to see the hype that got thrown into the hole in the first post get resurrected. [url]https://www.reddit.com/r/Unity3D/comments/5uh10h/portalkitpro_easy_portals_in_vr_and_other/[/url][/QUOTE] I smashed that motha-fuckin like button
Hey guys! I recently got accepted into university level courses for math and programming! And I'm only a freshman in high school! Holy shit this is great! I'm finally able to get some really cool stuff done!
[QUOTE='[aL`H]solokiller`og;51832474'][url]http://meetingcpp.com/index.php/br/items/c-proposals-please.html[/url] Some good looking proposals there. I'm particularly interested in reflection and dynamic library load support. Modules is of course always nice, but that's been dragging on for a while now.[/QUOTE] I think P0590R0 is my vote, it has the cleanest syntax.
I changed my CUDA noise libraries code so that I now generate look-up textures at runtime: [t]http://i.imgur.com/aXxy5kB.png[/t] [t]http://i.imgur.com/ncPYPM4.png[/t] Covers the permutation and gradient vector table, and cuts down the amount of calculations I have to do on the GPU pretty drastically. Texture memory on GPUs is pretty useful for this kind of stuff too, and its rather easy to setup. Generating the texture on the CPU (I'll cut out the verbose and pointless CUDA binding part) is really simple though, or is at least not as bad as I thought it would be. As usual, I first generate the little "perm" array containing the range of shuffled unsigned char's: [cpp] uint8_t perm[256]; for (size_t c = 0; c < 256; ++c) { perm[c] = static_cast<uint8_t>(c); } std::shuffle(perm, perm + 256, std::default_random_engine()); [/cpp] Then I generate the permutation texture, which uses the permutation hash table and writes different components of the usual hash-grabbing part of perlin noise to different color channels: [cpp] std::vector<unsigned char> tex; tex.resize(256 * 256 * 4); for (int i = 0; i < 256; ++i) { for (int j = 0; j < 256; ++j) { uint8_t a = perm[i] + static_cast<uint8_t>(j); uint8_t b = perm[(i + 1) & 255] + static_cast<uint8_t>(j); tex[4 * 256 * j + 4 * i] = perm[a]; tex[4 * 256 * j + 4 * i + 1] = perm[(a + 1) & 255]; tex[4 * 256 * j + 4 * i + 2] = perm[b]; tex[4 * 256 * j + 4 * i + 3] = perm[(b + 1) & 255]; } } [/cpp] Then, the gradient vector table is generated using a constant array defining the vector angles, along with the perm table as well: [cpp] // No need to generate these like we did with "perm": these are just lookups // for gradient vector angles static constexpr unsigned char grad[16]{ 245, 176, 176, 245, 79, 245, 10, 176, 10, 79, 79, 10, 176, 10, 245, 79 }; std::vector<unsigned char> gradient; gradient.resize(256 * 256 * 4); for (int i = 0; i < 256; ++i) { for (int j = 0; j < 256; ++j) { unsigned char px = perm[i]; unsigned char py = perm[j]; gradient[4 * 256 * j + 4 * i] = grad[(px & 7) << 1]; gradient[4 * 256 * j + 4 * i + 1] = grad[(px & 7) << 1]; gradient[4 * 256 * j + 4 * i + 2] = grad[(py & 7) << 1]; gradient[4 * 256 * j + 4 * i + 3] = grad[(py & 7) << 1]; } } [/cpp] Lastly, the device Perlin noise method becomes pretty simple, compared to how extensive these functions usually get: [cpp] __device__ float perlin2d(cudaTextureObject_t perm_tex, cudaTextureObject_t grad_tex, float2 point, int seed) { // Calculate 2D integer coordinates and fractional component float2 i = make_float2(floorf(point.x), floorf(point.y)); float2 f = make_float2(point.x - i.x, point.y - i.y); // Get weights. float2 w; w.x = f.x * f.x * f.x * (f.x * (f.x * 6.0f - 15.0f) + 10.0f); w.y = f.y * f.y * f.y * (f.y * (f.y * 6.0f - 15.0f) + 10.0f); float4 w4 = make_float4(1.0f, w.x, w.y, w.x * w.y); // Get four randomly permutated indices from the noise lattice nearest "point" // and offset them by the seed. float4 perm = tex2D<float4>(perm_tex, i.x / 256, i.y / 256); perm = perm + seed; // Permute the fourst indices again and get the 2D gradient for each of // the four new coord-seed pairs. float4 g1, g2; g1 = tex2D<float4>(grad_tex, perm.x, perm.y); g1 = g1 * 2.0f; g1 = g1 - 1.0f; g2 = tex2D<float4>(grad_tex, perm.z, perm.w); g2 = g2 * 2.0f; g2 = g2 - 1.0f; // Evaluate gradients at four lattice points. float a, b, c, d; a = dot(make_float2(g1.x, g1.y), f); b = dot(make_float2(g2.x, g2.y), f + make_float2(-1.0f, 0.0f)); c = dot(make_float2(g1.z, g1.w), f + make_float2(0.0f, -1.0f)); d = dot(make_float2(g2.z, g2.w), f + make_float2(-1.0f, -1.0f)); // Blend gradients. float4 grads = make_float4(a, b - a, c - 1, a - b - c + d); float n = dot(grads, w4); // Return value. return n * 1.50f; } [/cpp] Take that, Cargo cult! ... although I copied a lot of this code from [URL="http://www.decarpentier.nl/scape-procedural-basics"]here[/URL], especially the texture lookup method. Still some magic numbers and mysterious things I don't fully understand. He uses Cg, so I had to re-write it to work with CUDA. Did you know CUDA has a shitload of builtin vector types, but doesn't support performing operations between vectors and vectors, or vectors and scalars? I had to write my own set of operators for math operations with vectors. Seems like a [I]huge[/I] fucking oversight, and makes using vector types more of a pain than its worth by a large margin. The weirdest thing though is that the above gradient texture image should be more colorful, but apparently it becomes a png image with a bit depth of only 4? Conversely, the permutation texture should be mostly black and white, but its got a smattering of color. I generate it exactly like the gradient image, and just saved it (for testing purposes) using LodePNG. Even explicitly specifying the channel format and bitdepth didn't work. I haven't had the chance to test this with CUDA yet though, so maybe it actually works. But here's the [URL="http://www.decarpentier.nl/wp-content/uploads/PerlinGrad2D-150x150.png"]gradient[/URL] and [URL="http://www.decarpentier.nl/wp-content/uploads/PerlinGrad2D-150x150.png"]permutation[/URL] textures from the article, to clarify the differences in my textures. [editline]edited[/editline] Random bit of trivia, but the next article in the "Scape" series goes over better methods for simulating erosion with procedural noise. SpaceEngine uses this technique, along with the two other generators the author talks about. So if you wanted to know how they got those really neat mountain ranges in SpaceEngine, that's how!
[QUOTE=JWki;51832836]Hmmm what specifically are you interested in regarding dynamic lib support? The proposal doesn't look like it's providing any helpful functionality besides thinly wrapping dlopen/LoadLibrary. I'm also really interested in seeing how reflection will shape out though.[/QUOTE] The helper functions for getting the path to the current library and the library that defines a symbol look very useful. Up until now you needed to use platform specific functions to do this, and the results usually look ugly and are hard to understand.
[QUOTE=paindoc;51832995]Did you know CUDA has a shitload of builtin vector types, but doesn't support performing operations between vectors and vectors, or vectors and scalars? I had to write my own set of operators for math operations with vectors. Seems like a [I]huge[/I] fucking oversight, and makes using vector types more of a pain than its worth by a large margin. ![/QUOTE] WTF. OpenCL has native vector operations (excl matrices), it seems like complete madness. The main problem with OpenCL is that its float3 type is actually a float4 type for reasons, but that seems mental that CUDA doesn't support even simple vector operations
[QUOTE=DrDevil;51830740]Can't you keep your childish bullshit out of WAYWO? It's really bothering me. If you can't stop paying attention to the obvious troll you can at least spare the rest of us.[/QUOTE] I don't understand how you think this is childish bullshit honestly; it's just a conversation with someone who posts here often (albeit a permabanned person on multiple accounts). He's also not a troll. He's 100% serious about all his work. [QUOTE=Jack Parsons;51830963]Hi! I'm sorry you feel that way about my engine. I can assure you its not 100% "copy-pasted" code. Me and my friend wrote it! I feel the need to express how I feel about your thought on this, because now you're just being childish. People come on WAYWO to show off work, not to post about, in your words a "neighborhood alt maker known as Verideth". If theres anything I can do to apparently change your opinion, please, take it to the PMs, and not publicly. Thanks! :) Also, I'm sorry if I pissed you off with those comments I made. If theres anything I can do to make you happy, please, tell me :) [/QUOTE] Except I already tried to message you about this in discord, and then you removed me on steam for calling you out on it. All I wanted is for you to acknowledge it's not your code and to add some credits to the real creators; instead you decided to 100% deny that it was written by anyone but you (or your friends) even though I gave you the original sources; then you decided to go on a publicity stunt to get people to feel bad for you. All you had to do was put a comment in your files attributing the original sources and nobody could've said anything about it :( [editline]a[/editline] On the thread's topic, my friend and I've been working on a LuaJIT vm that runs inside a lua vm itself. We've added proper error stack fixing (as seen in the stack traceback in the output marked by *), and even proper variable name identification from bytecode. It passes (almost) everything perfectly when testing against Mike Pall's LuaJIT tests! [code] $ luajit-2.0.3 test-lujlu.lua [lua test suite] [debug] starting... [lua test suite] [debug] Starting test OP_RETURN... [lua test suite] [debug] Finishing test OP_RETURN... [lua test suite] [debug] Starting test OP_LOADK... [lua test suite] [debug] Finishing test OP_LOADK... [lua test suite] [debug] Starting test OP_MOVE... [lua test suite] [debug] Finishing test OP_MOVE... [lua test suite] [debug] Starting test OP_MOVE 2... [lua test suite] [debug] Finishing test OP_MOVE 2... [lua test suite] [debug] Starting test OP_CALL... [lua test suite] [debug] Finishing test OP_CALL... [lua test suite] [debug] Starting test OP_EQ... [lua test suite] [debug] Finishing test OP_EQ... [lua test suite] [debug] Starting test OP_EQ (not)... [lua test suite] [debug] Finishing test OP_EQ (not)... [lua test suite] [debug] Starting test OP_LOADBOOL (nil)... [lua test suite] [debug] Finishing test OP_LOADBOOL (nil)... [lua test suite] [debug] Starting test OP_LOADBOOL (1)... [lua test suite] [debug] Finishing test OP_LOADBOOL (1)... [lua test suite] [debug] Starting test ravi misc 1... [lua test suite] [debug] Finishing test ravi misc 1... [lua test suite] [debug] Starting test ravi misc 2... [lua test suite] [debug] Finishing test ravi misc 2... [lua test suite] [debug] Starting test ravi misc 3... [lua test suite] [debug] Finishing test ravi misc 3... [lua test suite] [debug] Starting test ravi misc 4... [lua test suite] [debug] Finishing test ravi misc 4... [lua test suite] [debug] Starting test ravi misc 5... [lua test suite] [debug] Finishing test ravi misc 5... [lua test suite] [debug] Starting test ravi misc 6... [lua test suite] [debug] Finishing test ravi misc 6... [lua test suite] [debug] Starting test ravi misc 7... [lua test suite] [debug] Finishing test ravi misc 7... [lua test suite] [debug] Starting test ravi misc 8... [lua test suite] [debug] Finishing test ravi misc 8... [lua test suite] [debug] Starting test ravi misc 9... [lua test suite] [debug] Finishing test ravi misc 9... [lua test suite] [debug] Starting test ravi misc ADDFI... [lua test suite] [debug] Finishing test ravi misc ADDFI... [lua test suite] [debug] Starting test ravi misc ADDFF... [lua test suite] [debug] Finishing test ravi misc ADDFF... [lua test suite] [debug] Starting test ravi misc ADDII... [lua test suite] [debug] Finishing test ravi misc ADDII... [lua test suite] [debug] Starting test ravi misc ADDIN... [lua test suite] [debug] Finishing test ravi misc ADDIN... [lua test suite] [debug] Starting test ravi misc SUBFF... [lua test suite] [debug] Finishing test ravi misc SUBFF... [lua test suite] [debug] Starting test ravi misc SUBFI... [lua test suite] [debug] Finishing test ravi misc SUBFI... [lua test suite] [debug] Starting test ravi misc SUBIF... [lua test suite] [debug] Finishing test ravi misc SUBIF... [lua test suite] [debug] Starting test ravi misc SUBII... [lua test suite] [debug] Finishing test ravi misc SUBII... [lua test suite] [debug] Starting test ravi misc SUBFN... [lua test suite] [debug] Finishing test ravi misc SUBFN... [lua test suite] [debug] Starting test ravi misc SUBNF... [lua test suite] [debug] Finishing test ravi misc SUBNF... [lua test suite] [debug] Starting test ravi misc SUBIN... [lua test suite] [debug] Finishing test ravi misc SUBIN... [lua test suite] [debug] Starting test ravi misc SUBNI... [lua test suite] [debug] Finishing test ravi misc SUBNI... [lua test suite] [debug] Starting test LuaJIT trace exit frame tests... [lua test suite] [fail] Execution of test file tests/luajit/exit_frame.lua failed! err => lujlu_custom_compiled.lua:187: stack overflow stack traceback: lujlu_custom_compiled.lua:187: in function <lujlu_custom_compiled.lua:187> * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' * tests/luajit/exit_frame.lua:74: in function 'f' * tests/luajit/exit_frame.lua:65: in function 'g' [lua test suite] [debug] Finishing test LuaJIT trace exit frame tests... [lua test suite] [debug] Starting test LuaJIT trace gc64 slot revival tests... [lua test suite] [debug] Finishing test LuaJIT trace gc64 slot revival tests... [lua test suite] [debug] Starting test LuaJIT trace snap tests... [lua test suite] [debug] Finishing test LuaJIT trace snap tests... [lua test suite] [debug] Starting test LuaJIT trace stitch tests... [lua test suite] [debug] Finishing test LuaJIT trace stitch tests... [lua test suite] [debug] Starting test LuaJIT lang -> /andor.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /andor.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /assignment.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /assignment.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /compare.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /compare.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /compare_nan.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /compare_nan.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /constant/number.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /constant/number.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /constant/table.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /constant/table.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /for.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /for.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /length.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /length.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /modulo.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /modulo.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /concat.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /concat.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /self.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /self.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /table.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /table.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /upvalue/closure.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /upvalue/closure.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /coroutine.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /coroutine.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /tail_recursion.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /tail_recursion.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /vararg_jit.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /vararg_jit.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /gc.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /gc.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /goto.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /goto.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/arith.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/arith.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/arith_jit.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/arith_jit.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/call.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/call.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/cat.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/cat.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/comp.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/comp.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/comp_jit.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/comp_jit.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/eq.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/eq.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/eq_jit.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/eq_jit.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/framegap.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/framegap.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/index.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/index.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/len.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/len.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/newindex.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/newindex.lua... [lua test suite] [debug] Starting test LuaJIT lang -> /meta/nomm.lua... [lua test suite] [debug] Finishing test LuaJIT lang -> /meta/nomm.lua... [lua test suite] [debug] Lua test suite terminating [lua test suite] [debug] Out of 65 tests, 64 tests passed, and 1 tests failed. [lua test suite] [debug] That's a 98.5% pass rate [lua test suite] [debug] Here's a detailed breakdown of all our test results: [lua test suite] [debug] 1. [passed] OP_RETURN (blank function must return nil) (1 of 1 sub tests passed) [lua test suite] [debug] 2. [passed] OP_LOADK (function with num must return num) (1 of 1 sub tests passed) [lua test suite] [debug] 3. [passed] OP_MOVE (function with loop, returning num) (1 of 1 sub tests passed) [lua test suite] [debug] 4. [passed] OP_MOVE 2 (function with loop, adding and returning num) (1 of 1 sub tests passed) [lua test suite] [debug] 5. [passed] OP_CALL (function tail calling global func) (1 of 1 sub tests passed) [lua test suite] [debug] 6. [passed] OP_EQ (function with if block, returning string) (2 of 2 sub tests passed) [lua test suite] [debug] 7. [passed] OP_EQ (not) (function with if block, returning string) (2 of 2 sub tests passed) [lua test suite] [debug] 8. [passed] OP_LOADBOOL (nil) (function returning bool) (1 of 1 sub tests passed) [lua test suite] [debug] 9. [passed] OP_LOADBOOL (1) (function returning bool) (1 of 1 sub tests passed) [lua test suite] [debug] 10. [passed] ravi misc 1 (function with eq condition, returing num) (1 of 1 sub tests passed) [lua test suite] [debug] 11. [passed] ravi misc 2 (function with eq conditions, returing num) (2 of 2 sub tests passed) [lua test suite] [debug] 12. [passed] ravi misc 3 (function with eq conditions, returing num or arg) (5 of 5 sub tests passed) [lua test suite] [debug] 13. [passed] ravi misc 4 (function with lt condition, returing num) (2 of 2 sub tests passed) [lua test suite] [debug] 14. [passed] ravi misc 5 (function returning lt condition) (2 of 2 sub tests passed) [lua test suite] [debug] 15. [passed] ravi misc 6 (function with and condition, returing num) (1 of 1 sub tests passed) [lua test suite] [debug] 16. [passed] ravi misc 7 (function with or condition, returing num) (1 of 1 sub tests passed) [lua test suite] [debug] 17. [passed] ravi misc 8 (function with and condition, returing num) (1 of 1 sub tests passed) [lua test suite] [debug] 18. [passed] ravi misc 9 (function with and condition for nums, returing num) (1 of 1 sub tests passed) [lua test suite] [debug] 19. [passed] ravi misc ADDFI (adding local number and float) (1 of 1 sub tests passed) [lua test suite] [debug] 20. [passed] ravi misc ADDFF (adding two local floats) (1 of 1 sub tests passed) [lua test suite] [debug] 21. [passed] ravi misc ADDII (adding two local integers) (1 of 1 sub tests passed) [lua test suite] [debug] 22. [passed] ravi misc ADDIN (adding local integer to const integer) (1 of 1 sub tests passed) [lua test suite] [debug] 23. [passed] ravi misc SUBFF (subtracting two local floats) (1 of 1 sub tests passed) [lua test suite] [debug] 24. [passed] ravi misc SUBFI (subtracting local integer from local float) (1 of 1 sub tests passed) [lua test suite] [debug] 25. [passed] ravi misc SUBIF (subtracting local float from local integer) (1 of 1 sub tests passed) [lua test suite] [debug] 26. [passed] ravi misc SUBII (subtracting two local integers) (1 of 1 sub tests passed) [lua test suite] [debug] 27. [passed] ravi misc SUBFN (subtracting const integer from local float) (1 of 1 sub tests passed) [lua test suite] [debug] 28. [passed] ravi misc SUBNF (subtract local float from const integer) (1 of 1 sub tests passed) [lua test suite] [debug] 29. [passed] ravi misc SUBIN (subtracting const integer from local integer) (1 of 1 sub tests passed) [lua test suite] [debug] 30. [passed] ravi misc SUBNI (subtracting local integer from const integer) (1 of 1 sub tests passed) [lua test suite] [debug] 31. [failed] LuaJIT trace exit frame tests (no description) (0 of 1 sub tests passed) [lua test suite] [debug] 32. [passed] LuaJIT trace gc64 slot revival tests (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 33. [passed] LuaJIT trace snap tests (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 34. [passed] LuaJIT trace stitch tests (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 35. [passed] LuaJIT lang -> /andor.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 36. [passed] LuaJIT lang -> /assignment.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 37. [passed] LuaJIT lang -> /compare.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 38. [passed] LuaJIT lang -> /compare_nan.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 39. [passed] LuaJIT lang -> /constant/number.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 40. [passed] LuaJIT lang -> /constant/table.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 41. [passed] LuaJIT lang -> /for.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 42. [passed] LuaJIT lang -> /length.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 43. [passed] LuaJIT lang -> /modulo.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 44. [passed] LuaJIT lang -> /concat.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 45. [passed] LuaJIT lang -> /self.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 46. [passed] LuaJIT lang -> /table.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 47. [passed] LuaJIT lang -> /upvalue/closure.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 48. [passed] LuaJIT lang -> /coroutine.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 49. [passed] LuaJIT lang -> /tail_recursion.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 50. [passed] LuaJIT lang -> /vararg_jit.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 51. [passed] LuaJIT lang -> /gc.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 52. [passed] LuaJIT lang -> /goto.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 53. [passed] LuaJIT lang -> /meta/arith.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 54. [passed] LuaJIT lang -> /meta/arith_jit.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 55. [passed] LuaJIT lang -> /meta/call.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 56. [passed] LuaJIT lang -> /meta/cat.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 57. [passed] LuaJIT lang -> /meta/comp.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 58. [passed] LuaJIT lang -> /meta/comp_jit.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 59. [passed] LuaJIT lang -> /meta/eq.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 60. [passed] LuaJIT lang -> /meta/eq_jit.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 61. [passed] LuaJIT lang -> /meta/framegap.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 62. [passed] LuaJIT lang -> /meta/index.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 63. [passed] LuaJIT lang -> /meta/len.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 64. [passed] LuaJIT lang -> /meta/newindex.lua (no description) (1 of 1 sub tests passed) [lua test suite] [debug] 65. [passed] LuaJIT lang -> /meta/nomm.lua (no description) (1 of 1 sub tests passed) [/code]
All day today I've been trying to find the source of my bad performance. My rendering pass completes entirely in around 5-10 ms (including the shadow pass and all post processing), and yet something is taking up a whopping 30 extra ms of frame time and I have absolutely no idea where. I've been taking measurements all over the place and sometimes an extra chunk of time appears and then disappears. Further, measuring at the beginning of the frame and at the end of the frame gives the expected time, but then measuring from the end back to the start of the next frame and the bubble of missing time appears again. There's no way a single cycle back to the beginning of a while loop will take 30 ms. :suicide: This is in both debug and release so I'm stumpped
[QUOTE=MeepDarknessM;51834530]I don't understand how you think this is childish bullshit honestly; it's just a conversation with someone who posts here often (albeit a permabanned person on multiple accounts). He's also not a troll. He's 100% serious about all his work.[/QUOTE] It's childish bullshit because youre bringing up unwanted drama. I'm fucking 15 and know you don't do that in a place like this, which is sad on your end because you're what? 20ish? And you still haven't learnt after being on FP for the past 4 years and you getting constantly flamed due to your arrogant posts starting stupid drama. Take it to the PMs for god sakes. Nobody cares. Nobody ever will. You're just as hated as me on these forums holy shit. Look man, I have nothing against you. You just really seem to have issues if you really cared that much to go on these forums and publicly "humiliate" me. @Admin, please don't ban. I'm not flaming, just trying to help out waywo [highlight](User was permabanned for this post ("Alt of permabanned user Verideth" - Novangel))[/highlight]
Breathiness has now been implemented. Getting it to sound okay was annoying, I'll most likely tweak it later. (warning: loud) [B]"Bob", 35% breathiness:[/B] [vid]https://my.mixtape.moe/zjzxdf.wav[/vid] [B]"Bob", 95% breathiness:[/B] [vid]https://my.mixtape.moe/kcxcmt.wav[/vid] [B]Bonus clip of "Moist Peter":[/B] [vid]https://my.mixtape.moe/akwfmd.wav[/vid]
holy shit warn us of that volume next time, you just woke up my dog who started barking which then woke up everything else in the house
[QUOTE=MeepDarknessM;51835048]holy shit warn us of that volume next time, you just woke up my dog who started barking which then woke up everything else in the house[/QUOTE] Sorry about that. I am used to listening to the voice on minimal volume due to my synthesizer's tendency to blow up my speakers with piercing, hellish screams if I don't configure filters correctly.
I can imagine you nervously listening to the whispers of the damned, Berkin, don't go crazy!
[QUOTE=Naelstrom;51835107]I can imagine you nervously listening to the whispers of the damned, Berkin, don't go crazy![/QUOTE] The whisperings of Bob will eventually give him a second personality called Bob which can only say a few words learned from the synthesizer. I'd imagine when he is outside or talking to someone and sudenly goes mute and starts saying aaaaahhhh eeeehhhh oooohhhh boooobbbbbbbb
[video]https://youtu.be/QFPsO0aEnhM?t=4[/video] The navmesh for my SDL2 game is now functional. There's a few things I'd like to do though to make it appear more natural, maybe curving around corners rather than instantly changing to the new direction. If anyone knows of a public domain top-down asset pack that might be appropriate, let me know!
[QUOTE=Radical_ed;51823540][media]https://youtu.be/8ct8LjnnKUA[/media] Here's the data being uploaded on 4g and downloaded via wifi w/ no predictive netcode[/QUOTE] [media]https://www.youtube.com/watch?v=4zZOxCKy8ek[/media] Just finished fleshing out the movement controller and figured out what assets I want to use. Still deciding on the finished player models, I might keep the simple pixel avatars with some slight tweaks. The sever and client components are now complete, I just have to hook them up now!
The larger my project gets the more time I seem to spend fixing bugs and not developing new features. Even worse since I haven't really worked on it in months. The bigger issue is my lack of code comments, what a mistake that was :v: [QUOTE=Jack Parsons;51834881]It's childish bullshit because youre bringing up unwanted drama. I'm fucking 15 and know you don't do that in a place like this, which is sad on your end because you're what? 20ish? And you still haven't learnt after being on FP for the past 4 years and you getting constantly flamed due to your arrogant posts starting stupid drama. Take it to the PMs for god sakes. Nobody cares. Nobody ever will. You're just as hated as me on these forums holy shit. Look man, I have nothing against you. You just really seem to have issues if you really cared that much to go on these forums and publicly "humiliate" me. @Admin, please don't ban. I'm not flaming, just trying to help out waywo[/QUOTE] Please stop posting. Please.
[QUOTE='[aL`H]solokiller`og;51832474'][url]http://meetingcpp.com/index.php/br/items/c-proposals-please.html[/url] Some good looking proposals there. I'm particularly interested in reflection and dynamic library load support. Modules is of course always nice, but that's been dragging on for a while now.[/QUOTE] Wasn't expecting reflection to appear in C++.
[QUOTE=tschumann;51835589]Wasn't expecting reflection to appear in C++.[/QUOTE] It's been in the works for years. It seemed like it might make it into C++17 at one point, but they couldn't decide on an implementation. Most of the discussion is about compile time reflection, i'm hoping runtime reflection a la C# or Java makes it in though, even if it bloats binaries (opt-in feature?). Otherwise i guess we'll have to do it ourselves using code generation.
what can you do with runtime reflection that you can't do with compile-time reflection?
[QUOTE=DarKSunrise;51837302]what can you do with runtime reflection that you can't do with compile-time reflection?[/QUOTE] Load extensions?
[QUOTE=DarKSunrise;51837302]what can you do with runtime reflection that you can't do with compile-time reflection?[/QUOTE] Lookup types on demand without knowing which types you'll be looking up at compile time?
oh right
Can you give an example when runtime does something compile time can't? It's not like you can hotload new types into C++. Unless dll loading possibly?
[QUOTE=tschumann;51835589]Wasn't expecting reflection to appear in C++.[/QUOTE] All I want for christmas is the ability to iterate over a struct
[QUOTE=WTF Nuke;51839162]Can you give an example when runtime does something compile time can't? It's not like you can hotload new types into C++. Unless dll loading possibly?[/QUOTE] [code] CBaseEntity* CreateNamedEntity( const char* pszName ) { Type* pType = Class.ForName( pszName ); if( pType && pType->DerivesFrom( "CBaseEntity" ) && pType->HasDefaultConstructor() ) { return pType->NewInstance(); } return nullptr; } [/code] Just a simple example. I suppose you could combine annotations with compile time reflection to build a map of types, but then you need annotations that reflection can pick up on.
Hmm interesting, but couldn't you implement that with compile time reflection? Just map a string to a type?
[QUOTE=WTF Nuke;51840017]Hmm interesting, but couldn't you implement that with compile time reflection? Just map a string to a type?[/QUOTE] Perhaps, it depends on what compile time reflection will actually be able to do. I guess we'll have to wait and see.
Yeah very true. I just heard that if we get (adequately powerful) compile time reflection, we can implement runtime exception using that. I guess it's just hoping that people smarter than me will make a good decision.
[QUOTE=WTF Nuke;51840032]Yeah very true. I just heard that if we get (adequately powerful) compile time reflection, we can implement runtime exception using that. I guess it's just hoping that people smarter than me will make a good decision.[/QUOTE] You can just copy every type you reflect into a runtime version of it. It'll probably cost a lot of heap space though, reflection should be possible with only statically allocated memory. Built-in runtime reflection would have the advantage of using a compiler provided string pool, like MSVC's string pooling option. That depends on where the memory for compile time reflection's strings comes from.
Sorry, you need to Log In to post a reply to this thread.