Jump to content

Josh

Staff
  • Posts

    23,341
  • Joined

  • Last visited

Blog Comments posted by Josh

  1. 4 minutes ago, Genebris said:

    I get the orientation part, but what about position? Is it interpolated? I don't want any smoothing or lags in my movement.

    The mouse does not affect movement, except the direction you are looking will. There is going to be acceleration in the player movement anyways, so I don't think this is critical.

    It's similar to the way we handle VR head tracking, where the headset orientation is detected in the rendering thread at the last possible moment before rendering a new frame.

  2. Another update adds horizontal scrolling on text area and tree view widgets, which finishes out all the functionality I wanted. (This is something the scene tree in LE4 never had.)

    I also fixed a bug in the SVG loader (I think) that was causing a random crash during loading.

    I developed this all on a monitor with 125% scaling before I had the scaling worked out, so I think everything is about 25% too big. I want to go through and compare all the element sizes to the approximate sizes in the win32 interface.

    Color scheme system needs to be worked out and finalized.

    And I need to make our little project manager app to create new projects and select recent ones.

    I'll probably move on to the documentation first, because that will allow people to start using the SDK faster.

    Image2.thumb.png.772b94be5c056e8165e7f0f4a4bcad94.png

    Image3.thumb.png.0353e85d8c016ac376ec44c7e89a2ebe.png

    • Like 1
  3. And another update:

    • Added STEPPER style sliders.
    • Added OK and CANCEL button styles (enter and escape key will activate these unless another widget is focused that uses these keys).
    • Added checked menu items.
    • Added toolbar buttons.
    • Added GROUP style panels.

    And with that, all the widget functionality I was planning on is finished.

    Still to do:

    • Finish scrollbars on some widgets.
    • Light color theme.
    • Documentation.
  4. On 11/20/2020 at 9:36 AM, Lethal Raptor Games said:

    I'm interested in getting this to work on a small outdoor scene.  Are voxels automatically calculated when we load a model?  And does it only work with point lights at the moment?

    At the moment, it will only work in one small area around the origin (0,0,0) and only on entities that have had the MakeStatic() method called, and not on terrain.

    • Like 1
    • Thanks 1
  5. I like that you are designing it for a specific environment. What are the characteristics of a sci-fi reactor? A nuclear reactor is the closest thing we can base this on.

    physics reactor GIF

    nuclear reactor technology GIF by MIT

    Combating corrosion in the world's aging nuclear reactors

    Pentagon Awards Contract for Mobile Nuclear Reactor

    It's tall and cylindrical. What would the surrounding environment look like? It would probably have lots of pipes and wires, and platforms to reach each vertical level. There would be some kind of cooling system, and maybe a battery system to store electrical energy. Since there is probably a lot of vertical space, you might think about what texture should go on top of your texture above? What should be below it? Can they be mixed and matched to make interesting patterns? Will the floor the rest on have any curved walkways? Are there pipes and supports coming out of the wall?

    When the textures guide and suggest the level geometry, that is when the level design magic starts.

  6. We made it, with time to spare! That means this software is going to become a reality by Christmas.

    Three stretch goals remain:

    • Linux and Mac support
    • C# and Lua support
    • Visual interface designer

    Based on your comments, the Mac / Linux goal is the most popular, but a survey will be taken at the end of the campaign to verify this.

    Next Steps

    The sky is the limit, but we need to get this out to the right audience. I'm counting on your to spread the word across the internet and reach interested parties. Fortunately, a successful Kickstarter campaign carries some validity. When a crowdfunding campaign first launches, it is spam. Once it is successful, it is a news story. So I think you will find the audience is more receptive when you post about the successful campaign now.

    • Like 1
  7. It looks like 1024 is WAY too big for the patch size, because it makes the terrain chunks so large that LOD is impractical. I am switching it to 256. Here is some code that lets you easily change the parameters:

        const int terrainsize = 32768;
        const int patchsize = 64;
        const std::string heightmapfile = "32768.r16";
    
        auto stream = ReadFile(heightmapfile);
        auto buffer = CreateStreamBuffer(stream, 0, stream->GetSize());
        auto pixmap = CreatePixmap(terrainsize, terrainsize, TEXTURE_R16, buffer);
    
        auto dest = CreatePixmap(patchsize, patchsize, TEXTURE_R16);
    
        CreateDir("Terrain/32768/LOD0");
        for (int x = 0; x < pixmap->size.x / patchsize; ++x)
        {
            for (int y = 0; y < pixmap->size.y / patchsize; ++y)
            {
                pixmap->CopyRect(x * patchsize, y * patchsize, patchsize, patchsize, dest, 0, 0);
                dest->Save("Terrain/32768/LOD0/" + String(x) + "_" + String(y) + ".dds");
            }
        }
    
        int num = terrainsize / patchsize;
        int lod = 0;
    
        while (num > 0)
        {
            CreateDir("Terrain/32768/LOD" + String(lod + 1));
            for (int x = 0; x < num / 2; ++x)
            {
                for (int y = 0; y < num / 2; ++y)
                {
                    auto pm00 = LoadPixmap("Terrain/32768/LOD" + String(lod) + "/" + String(x * 2 + 0) + "_" + String(y * 2 + 0) + ".dds");
                    auto pm10 = LoadPixmap("Terrain/32768/LOD" + String(lod) + "/" + String(x * 2 + 1) + "_" + String(y * 2 + 0) + ".dds");
                    auto pm01 = LoadPixmap("Terrain/32768/LOD" + String(lod) + "/" + String(x * 2 + 0) + "_" + String(y * 2 + 1) + ".dds");
                    auto pm11 = LoadPixmap("Terrain/32768/LOD" + String(lod) + "/" + String(x * 2 + 1) + "_" + String(y * 2 + 1) + ".dds");
                    pm00 = pm00->Resize(patchsize/2, patchsize / 2);
                    pm10 = pm10->Resize(patchsize / 2, patchsize / 2);
                    pm01 = pm01->Resize(patchsize / 2, patchsize / 2);
                    pm11 = pm11->Resize(patchsize / 2, patchsize / 2);
                    pm00->CopyRect(0, 0, patchsize / 2, patchsize / 2, dest, 0, 0);
                    pm10->CopyRect(0, 0, patchsize / 2, patchsize / 2, dest, patchsize / 2, 0);
                    pm01->CopyRect(0, 0, patchsize / 2, patchsize / 2, dest, 0, patchsize / 2);
                    pm11->CopyRect(0, 0, patchsize / 2, patchsize / 2, dest, patchsize / 2, patchsize / 2);
                    dest->Save("Terrain/32768/LOD" + String(lod + 1) + "/" + String(x) + "_" + String(y) + ".dds");
                }
            }
            num /= 2;
            lod++;
        }

     

    • Like 2
  8. I've got it working better now. There are several factors to take into account when you choose your settings. How reflective is the scene? What resolution do you want the voxels to be? How many cascaded grid are there? How quickly do you want the GI data to update? Faster updates means slower overall performance, but it can be scaled back and forth depending on your usage.

    • Like 3
×
×
  • Create New...