Jump to content

SpiderPig

Members
  • Posts

    2,423
  • Joined

  • Last visited

Everything posted by SpiderPig

  1. Is there anyone around here that would like to join a C++ project made in Ultra as a programmer? I can't offer payment (yet) but if anyone wants to expand their skills or just have a bit of fun. There's more info about the project here : https://discord.gg/HB8yZMfvtP What I'm looking for is someone who wants to contribute to some already existing C++ code I have, and making some more classes together in the future. What ever you contribute to, you can use that code in your own project. I have things like; Godot's UI system (90%) Voxel Terrain (80%) Streaming Voxel Terrain (80%) Procedural Foliage Generation (80%) Character Generators (10%) Perlin & Simplex Noise (100%) Terrain Generators (80%) Dynamic Sky Shader (50%) Much, much more! I'm not sure how I'll share the code yet, maybe GIT HUB? Even if someone wanted to make some of these things as LUA components / extensions for the editor, we can discuss that. Just thought I'd see who's out there.
  2. I've noticed a drop in performance too but havn't had time to investigate yet.
  3. Another option for the publisher would be to exclude certain files. Like "exe" should be included but "_d.exe" should be excluded. Sometimes we might want to publish the debug stuff and other times not. Even being able to save certain publish configurations would be nice. We could change between a debug publish config and a release publish config.
  4. I've found this is needed for uploading to Steam. When you encrypt / compress one large zip file and change only a small file in that zip, the zipping algorithm must be changing all the bytes of the zip file, because the Steam uploader will upload the entire zip again, no matter the size. It makes creating small updates for your game impossible.
  5. It does, thankyou! 1. I have no immediate plans for this. Mesh shaders by themselves are not very useful. You need content that is designed to work with mesh shaders. Of course, mesh shaders can be used directly if you write OpenGL code. I am planning to add new rendering hooks in soon, and it will be a lot easier to handle than it was in the Vulkan renderer. If this means that we can do it ourselves with opengl if we need then I am happy! 2. This is doable without much trouble. You can probably access it already if you just go into the Render:: namespace. This is great, I'm going to look into this during the week. 3. I plan to keep terrain in the editor as a static object oriented at the center of the world for the immediate future. Future development is going to go in the direction of very large scale terrains, and then finally planet rendering. Okay, so I take it it will be a completely new system? 4. This is possible,. but it sounds like a very niche feature not many people would have use for. This would be good to see as advanced features like this enable people to do different things. But if we can do something like this ourselves with Mesh / compute shaders and having access to the mesh array, then that is okay. 5. I expect version 1.0 will be done by Christmas at the latest, maybe by Halloween. The only major features left to implement after the next update are particles and GPU culling. Awesome! That's what I was hoping for. 6. Since 64-bit floats require a lot of auxillary features to be useful, I have no estimate of when this will be added. It's tied to large-scale terrain and geo-spatial features. Okay, as long as it is guaranteed to happen and I'm not holding out for a feature that may get ditched, then that's fine. I can use origin shifting for now in my project. Thanks for the detailed answers! If I can get a basic foliage system going for voxel terrain with compute shaders and the mesh array, I'm sticking with Ultra.
  6. @Josh I'm at a point where I need to know if Ultra is going to be the best choice for developing my project. As you know my project uses voxel terrain and so can not work with the foliage system. I thought I could implement something my self using compute shaders but it is not currently possible as we have no access to the underlying mesh array the engine uses. What I need to know are; Will mesh shaders be implemented? Will we have access to the mesh array so we can create meshes with compute shaders? (this might be part of mesh shaders) Will the foliage system work with multiple terrains as well as the foliage layer being able to be rotated with a terrain? Will we have the ability of creating a mesh layer that does not need a terrain? This would be a simple grid of meshes that we can use a map for XYZ displacement and a map for visibility. The entire layer should be able to translate and rotate like any other entity. This is really what I need for foliage on a voxel terrain but it can have many other uses as well. E.g. making cities or anything else that we don't want to create 20,000 entities for. What's an ETA for v1.0? Are we talking by the end of the year or the end of next year? Some sort of idea of what you're aiming for would be very helpful. Are 64bit floats defiantly coming? Soon after v1.0 or more like 2 years away? I hope you can shed some light on these questions. Thankyou.
  7. I've not been able to get Ultra to compile in anything other than VS2022. I think Ultra needs platform toolset v143 which I think is only compatible with VS2022. Your current error though is because it can't find the right path to Ultra. Maybe check UltraEnginePath in PropertyManger->PropertySheet->UserMacros and see what that points too.
  8. Both of these DDS files, which will load okay as a texture, will not load as a pixmap. LoadPixmap() returns null. EDIT : Okay the DIFF texture needed the ISPCTexComp plugin loaded and it works. But the NORM texture stills fails to load as a pixmap. EDIT : I know what the problem is now. The following code will not load the pixmap because I think loading it as a texture first has marked the file sas in use or something. If this is the cause I think LoadPixmap() needs an error to be printed to the console. auto mat = LoadMaterial("MyMat.mat"); //<- contains Stone_DIFF.dds in slot 0 auto pixmap = LoadPixmap("Stone_DIFF.dds"); //<- returns null Stone.zip
  9. This is half the reason why I want to make grass that is pure geometry and does not discard pixels. It seems counter intuitive but in some cases it seems that having more triangles is better than using billboards.
  10. SpiderPig

    Sins of a Dragon

    Looks amazing!
  11. Yeah give it a go and see. I'm not sure about a clean install that removes the path data. It's either registry keys or maybe the config file for Ultra. I forget where that is, ProgramData\Ultra Engine maybe? Welcome
  12. Did you install visual studio with "desktop development with C++" selected?
  13. Are you getting the same DLL errors? My problem was I was running my game on a PC with integrated graphics.
  14. 92 downloads

    To Install: Extract the downloaded zip file and move/copy the folder "io_mesh_ultra" to Blender 4.0's addon folder. ("Blender/4.0/scripts/addons") Launch Blender and navigate to "Edit->Preferences" Click the add-ons tab look for Import-Export: Ultra Engine MDL and enable it To discuss bugs and further development please comment on the forum here : These are the current default settings: Export Position False (Default) - will not export the objects position. This will be exported as 0,0,0 True - will export position Use Object Name False (Default) - Uses the file name written in the file save dialog to name the exported MDL file True - Uses the object name in blender as the MDL file name Export LODS True (Default) - will search the scene (selected objects or not) for any LOD objects E.g. If you select a model named "Cube", it will search for and export objects that are named; "Cube_LOD1" "Cube_LOD2" etc... False - Does not export LODS Export Collider True (Default) - Searches the scene for an object with a suffix of _PHY E.g. If you select a model named "Cube", it will search for an object named "Cube_PHY" and export that mesh as a collider file. (Embedded colliders coming soon) False - Does not export Collider Convert Textures This is a WIP. It should work, but it is slow sometimes depending on how many and how large your textures are. So if blender hangs and goes non responsive for a few minutes that could be why. False (Default) - will copy textures that the blender materials use to the target directory where you have specified to save the MDL file too. True - Will first convert any non DDS files to DDS with the correct compression, saving them in the same folder as the source image, before then copying the new DDS file over to the target directory where you have specified to save the MDL file too. All DDS file are renamed to the material name appended with the appropriate slot name E.g. If the material name is "Cube" Diffuse textures will be named "Cube_DIFF.dds" Normal textures will be named "Cube_NORM.dds" Ambient occlusion, roughness and metalness maps will be combined into one DDS file name "Cube_AO_ROUGH_METAL.dds" Ultimate the only object you need to select when exporting is the root object. E.g. the LOD0 object. Doesn't currently work if the root object is named LOD0 though. Has to be "Cube" not "Cube_LOD0". I can add support for this if it's needed. You can also batch export be default. All you need to do is select all the root objects that you want to export and it will export them all to the same folder. Best to set "Use Object Name" to true when batch exporting other wise the file names will conflict and each selected object will just overwrite the previous one. Materials are exported to the same directory as the specified MDL path. Here is the only node setup that will be able to collect and export the textures. Please excuse the low resolution image - not sure how I can get blender to render to an image larger than the screen! I'll add some better images later. You don't need all of these images loaded to export the material correctly. From top to bottom on the left hand side, DIFFUSE, AO, METAL, ROUGH & NORM.
  15. 10 downloads

    Here's a little addon for Blender 4.0 that will export any selected object as a MESH collider for use in Ultra. It may work with other versions of blender but I've not tested it. There are no options for the export process. By default Z is up in Blender so upon export the vertex y and z positions are swapped so that Y is up in Ultra. I could probably add an option to toggle this if it's needed. Any suggestions for improvements are welcome! To Install: Extract the downloaded zip file and move/copy the folder "io_mesh_collider" to Blender 4.0's addon folder. ("Blender/4.0/scripts/addons") Launch Blender and navigate to "Edit->Preferences" Click the add-ons tab look for Import-Export: Ultra Engine Collider and enable it
  16. This isn't a problem with a specific zip file. It is Yue's PC.
  17. I have done this in my project that Yue is running. It doesn't print anything it just crashes. LoadPackage() itself is crashing shortly after it prints "Loading package".
  18. I think you will need to do a remote debug. Its only happening on his PC.
  19. Aha, I have solved it. It was a shader issue. Old Shader with incorrect way of applying alpha channel. void main() { vec4 tex_sample = texture( sampler2D( materials[ in_MaterialIndex ].textureHandle[ 0 ] ) , in_TexCoords.xy ); color[0] = vec4( 1 , 1 , 1 , tex_sample.x ); color[0] = ( ( color[0] * tex_sample.x ) * in_Color ); } New shader with fixed alpha channel. void main() { vec4 tex_sample = texture( sampler2D( materials[ in_MaterialIndex ].textureHandle[ 0 ] ) , in_TexCoords.xy ); color[0] = vec4( in_Color.x , in_Color.y , in_Color.z , tex_sample.x ); color[0].rgb *= tex_sample.x; } @Josh One thing I've never understood is why this "color[0].rgb *= alpha_value" has to be done to achieve transparency? I thought the alpha component of the vec4 was all that was needed.
  20. This is my code for loading all packages within the game directory. Yue has uploaded a zip on the thread he created. vector<shared_ptr<Engine::Package>> packages; void LoadPackages(Engine::WString path = "") { auto directories = LoadDir(path); for (auto dir : directories) { auto ext = ExtractExt(dir); if (ext != "") { if (ext == "zip" || ext == "pak") { auto package = LoadPackage((path != "" ? path + "\\" : "") + dir); if (package != nullptr) { package->SetPassword("password"); packages.emplace_back(package); #ifdef ENABLE_LOG Log("SUCCESS : Loaded Package : " + path + "\\" + dir); #endif } else { #ifdef ENABLE_LOG Log("ERROR : Failed to Load Package : " + path + "\\" + dir + "!"); #endif } } } else { LoadPackages((path != "" ? path + "\\" : "") + dir); } } }
  21. There's still a difference between the widget fonts and my own. Mine seem to be a little more bolder. It's more noticeable at lower font sizes. This is my rendering of fonts at different fonts sizes from 8 to 38 respectively. Size 8 (the first one) is the worst. I think this might be a hinting issue, although I'm unsure how to get the truetype library to render with hinting if it's not already by default...
  22. Should there be a animation index there too? Or can that be retrieved from the skeleton? If we blend animations... does each bone have a different frame index?
×
×
  • Create New...