Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Sep 14 22:52

    turanszkij on master

    updated third person controller… (compare)

  • Sep 14 18:20

    turanszkij on master

    camera constant buffer refactor (compare)

  • Sep 14 16:22

    turanszkij on master

    added chromatic aberration post… (compare)

  • Sep 14 14:53

    turanszkij on master

    sky + readme update (compare)

  • Sep 11 22:53

    turanszkij on master

    new-sky dynamic sky atmosphere updates (compare)

  • Sep 11 22:48

    turanszkij on new-sky

    dynamic sky atmosphere updates (compare)

  • Sep 08 21:55

    turanszkij on new-sky

    new-sky (compare)

  • Sep 04 20:42

    turanszkij on master

    cloud update (compare)

  • Sep 04 19:08

    turanszkij on master

    updated clouds and shadercompil… (compare)

  • Sep 03 20:02

    turanszkij on master

    small refactor (compare)

  • Sep 02 10:59
    turanszkij commented #28
  • Aug 31 19:29

    turanszkij on appveyor

    removed uwp (compare)

  • Aug 31 19:00

    turanszkij on appveyor

    block rdp (compare)

  • Aug 31 18:51

    turanszkij on appveyor

    rdp no password (compare)

  • Aug 31 18:46

    turanszkij on appveyor

    rdp (compare)

  • Aug 31 18:39

    turanszkij on appveyor

    try (compare)

  • Aug 31 18:28

    turanszkij on appveyor

    updated to vs 2019 (compare)

  • Aug 31 18:26

    turanszkij on appveyor

    updated to vs 2019 (compare)

  • Aug 29 19:20

    turanszkij on master

    lightmap fix (compare)

  • Aug 28 21:46

    turanszkij on master

    updated hello world sample (compare)

Turánszki János
@turanszkij
Matthias Moulin
@matt77hias
What are the invalid entities for?
Turánszki János
@turanszkij
Not sure which particular one you mean, but usually it just means "nullptr" in the ecs world. It is the 0 value. It is a value that can never be a valid entity, and the ComponentManager is unable to contain it. There is a nice feature to this: there is a hashmap optimization that can be done, if there is a designated special value that can never be a key (the hashmap can be flattened into a simple array, and this specific key will be responsible of separating hash buckets). Although I am still using std::unordered_map, hopefully replacing it with yield a big performance increase with minimal code change. I am still contemplating whether to start writing my own, or include a third party fast hash map.
Matthias Moulin
@matt77hias
But without the optimization you mention, you do not use invalid entities?
Isn't the flattening of the hashmap prone to lots of overhead if the the first buckets are too small?
Alternatively, you can assume that all hashed keys are equally likely so that all buckets can reserve the same number of elements.
Then you can use a special value to tag empty slots, or just use a separate array on the stack containing the size (!= capacity) of all the buckets.
Matthias Moulin
@matt77hias
And the capacity of a single bucket is just allocated (size / (sizeof key-value pair) * (number of buckets))
Correction: no size array, since the number of buckets may grow (or shrink) dynamically.
Turánszki János
@turanszkij
I still use invalid entities. When declaring an entity somewhere, I always initialize to invalid entity. The ComponentManager always asserts if it finds an invalid entity. It is generally used when entity is a member of something, it can be checked for invalid entity and I know that it references nothing if it is invalid. Like MeshComponent for example has an armatureID entity as its member. If that is INVALID_ENTITY, that means the mesh is not deformed by armature.
For the hashmap, I haven't tried writing it yet, so I can't really comment. But in this video the guy speaks of the expected speedups of a fast hashmap implementation and comparing it to std::unordered_map: https://youtu.be/M2fKMP47slQ
Turánszki János
@turanszkij
I said that I use invalid entities for specifying unused entities, so that would also mean I am actually not using invalid entities for anything. So clarification: INVALID_ENTITY means that it should not be used because it doesn't point to any components
nemesis567
@nemesis567
Hello
Turánszki János
@turanszkij
@nemesis567 Hi, if you have a question, ask away or just chat. :)
nemesis567
@nemesis567
Thanks
What's the current workflow for creating a new compute shader?
Turánszki János
@turanszkij

@nemesis567 You can just create a new compute shader in the WickedEngine_SHADERS project. When it's compiled, it will be output to WickedEngine/shaders folder by default. Then the simplest way is to load it via the resource manager:

ComputeShader* mycomputeshader = (ComputeShader*)wiResourceManager::GetShaderManager().add("mycomputeshader.cso", wiResourceManager::COMPUTESHADER);

(The wiResourceManager::GetShaderManager() is not necessary, you can use any resource manager object, but this one will be cleared when wiRenderer::ReloadShaders() is called)

You don't have to create the shader in that project though, it can be anywhere, you just have to load the compiled shader object (.cso) file
Furthermore, there are lots of examples how to create shaders in wiRenderer.cpp LoadShaders() function, good luck!
nemesis567
@nemesis567
Thanks
Is this WickedEngine's main communication channel?
Turánszki János
@turanszkij
For now, yes. I'm evaluating Discord and maybe move over as more people will be familiar with it. Do you have an opinion on this?
nemesis567
@nemesis567
Yes, discord is a lot better as everyone doing game dev uses it. Discord channels for other engines are also very active.
And many people stroll from one channel to the other to see what's new on each, all within the same page.
Turánszki János
@turanszkij
The Discord channel has been created: https://discord.gg/CFjRYmE