Giter Club home page Giter Club logo

cu's People

Contributors

edrickhong avatar findcylim avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

cu's Issues

Console commands

add in a console

I want to add struct and > 4 args support in our function caller first

Linux XWayland light flickering

Point lights are unsynchronized in XWayland. EG: Point light count is not in sync w that of the host's.
GUI is being affected as well. Maybe we should consolidate everything to a single buffer? Skeletal memory isn't being affected so maybe this is the issue?

PHashString collisions

The followi lines hash to the same number

printf("%llu,%llu,%llu,%llu", PHashString("-listttt"), PHashString("-sortttt"), PHashString("-sirtttt"), PHashString("-lortttt"));
printf("%llu,%llu,%llu,%llu", PHashString("-list"), PHashString("-sort"), PHashString("-sirt"), PHashString("-lort"));

Somehow "-" is fucking up the hash

Flickering

sometimes the models will flicker (both static and animated models). Could be caused by dropped command buffers.

Packed pointers

Amd64 pointers are only 48 bits long. Capitalize on this to better pack data (top 16 bits of a cmdbuffer pointer seems good to store group ids)

Cparser can be used to generate documentation

Cparser can understand functions and structs etc. We can use this to generate documentation that warns if documentation is out of date ( do simple member/argument checking)

Target output planned is markdown rn. We'll evaluate this decision later.

TODO List

List of things to do. Try to complete some of them within the next 2 months

Misc

  • VT texture feedback buffer should write a material ID instead of a texture ID, then the individual textures will be fetched from each material E
  • VT system evict is not in place yet. After implementation, please test E
  • Replace the asset manager allocator with a buddy allocator instead of the current linked list implementation. Replace the macros for the common functions w templates E
  • Settings parser (Text based. should store properties like window dimensions etc. Must be text editable. Provide a function to fetch and write the value. ) E
  • Asset packer CY
  • Improve the collision rate of PHashString
  • Transition to Vulkan 1.1 (VkDevice creation should be using done using a device group and vkCmd* should take in a device mask read the spec for more details. In the case where 1.1 is not available, fallback to 1.0 using an individual physical device. vkCmd* masks will be ignored)

GUI improvements (gui_draw - This is immediate mode GUI. Refer to IMGUI or read up on immediate mode GUI vs retained mode GUI to know the difference)

  • Color picker
  • Slider
  • Resize-able GUI windows
  • Checkboxes
  • Scrolling in the window (scrollbar etc)

Debugging

  • Log all open files for Windows. (Refer to Linux. The exact same code should work but win32 file handles are 64 bit on 64 bit machines, so the LockCmpXchg has to be the 64 bit version. You can find the implementation in amd64 folder)
  • Track alloc calls - alloc, unalloc, realloc (the first two are wrappers to malloc and free. write a wrapper for realloc)
  • Add a test to run check for hash collision rates against a dictionary.
  • Add more models for testing the model importer. I know there for a fact that it fails sometimes.

Audio

  • Support Ogg compressed sound. Compress the audio to our internal ADF format. The decoder has to be self implemented. You can use an encoder from a library but try to keep it to a header only library (eg stb_*.h libs)
  • SIMD audio mixing. Current audio mixing doesn't use SIMD capabilities
  • Audio pitch shifter. Basically Changing the speed of the given audio. Can be done by compressing the signal aka removing audio samples, or generating in between samples to lengthen the audio. DO NOT change the sample rate of the audio device. That is not what we want

Component format should do a search by string

Currently the format does a search by hash. This makes it inflexible cos this means we cannot change the hash algorithm during development. Instead, we will store component string names and only convert them to a hash only lookup at ship time

Cannot set the sample rate

Error when attempting to set sample rate on windows 10 on unsupported audio cards.

res = clockadj->SetSampleRate(frequency); <

Bypass the vulkan loader

Using the loader incurs a 7 percent penalty. Bypass it. Also saves us the trouble of updating the list or dll's we have to iterate through

Math tweaks

Minor math changes for for better operability with vulkan and reduced complexity:

  • Make matrices column major
  • Vec3 should actually be vec3
  • Don't use simd unnecessarily in vec types
  • Quaternions should reuse vec4 where possible

We sometimes generate invalid TIDs

To reproduce, start with a clean scene and add a new model. Notice that the model doesn't light up either. It might be the texture fetch is not being done

MetaCall bugs in Windows

The Windows implementation is buggy. Already found an issue with calling printf from a REFL function

void TEST(u32 a,f32 b,u32 c,f32 d){
printf("%d %f %d %f\n",a,b,c,d);
}

This will crash inside the printf call if:
only the lower 32 bits in the floating point values are written in xmm register. Works when the upper 32 bits are written

or if the arguments used f64 instead:
the function will crash regardless

Enforce debug pointers in engine code

Find a way to transparently enforce debug pointers throughout. Maybe by saving the debug data at the head of the allocation and overloading all pointer access or something better

Linux Windowing

  1. X11 WM_CLASS is not registered
  2. Add Wayland support proper
  3. WCreateWindow should have a flag to specify if we are going to use vulkan with it. We then internally query for wayland support for both windowing and vulkan before deciding to create either a wayland window or a xlib window

Cparser improvements

Tagging const and ignoring it. We should ignore keywords since the parser doesn't care

Handle unsigned modifier

String math execution

GUI warning

The submission between debug marker and the one before it makes no draw commands, resulting in the warning

clear most of these todo's

  • src/cparser/main.cpp:7: TODO:

  • src/cparser/main.cpp:15://TODO: struct union and enum have the same parse structure (should we condense here?)

  • src/cparser/main.cpp:85://TODO: prep this to move into pparse

  • src/cparser/main.cpp:221: //TODO: we shouldn't need to do this

  • src/cparser/main.cpp:289: TODO: I do not like how initialization is done rn

  • src/cparser/main.cpp:460://TODO: allow pouinter types

  • src/cparser/main.h:22://TODO: these are not generic enought (int etc. do that and we can move this to pparse)

  • src/cparser/main.h:437: //TODO: support more than 1d arrays

  • src/cu_std/cu/mmath.cpp:1://TODO: I actually don't know if inverse works in column major

  • src/cu_std/cu/mmath.cpp:1499: //TODO:since we are only rotating one point, we should optimize for this case here

  • src/cu_std/cu/mmath.cpp:1627://TODO: this is very inefficient. we can solve this in 2d space easier

  • src/cu_std/cu/mmath.cpp:1641://TODO: this is very inefficient. we can solve this in 2d space easier

  • src/cu_std/cu/pparse.cpp:310: //TODO: handle this

  • src/cu_std/cu/pparse.h:13:TODO: we should make size or pos to ptrsize instead of u32

  • src/cu_std/cu/pparse.h:255://TODO:

  • src/cu_std/cu/vvulkan.cpp:2796://TODO: VkSampleMask* samplemask is a dependency (do we not save it?)

  • src/cu_std/linux/wayland_wwindow.cpp:216: //TODO: we might want to free if already initialized?

  • src/cu_std/linux/wayland_wwindow.cpp:513: //TODO: disconnect display and xkb_ctx

UI - UI freeze

Attempting to change models will freeze the dropdown bars of every UI. Numerical fields of the model (Material ID) also. but other numerical values (Animation rate, Size etc) will freeze, but blinks instead (Not Active -> Active -> Not Active?) and scale/position will just leave an empty field (but not affect the object) until tabbed back into the object. Object cannot be manually moved either.

Entity Draw Data is still removable, so it is probably a mouse checker issue (Double click instead of single click?

ezgif com-video-to-gif

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.