Jump to content

Josh

Staff
  • Posts

    23,117
  • Joined

  • Last visited

Everything posted by Josh

  1. I have been waiting a long time for this. From this point things will progress rapidly.
  2. Apparently this requires a closed mesh: https://github.com/melax/sandbox/issues/5#issuecomment-2069836452
  3. Fixed, shader update required.
  4. Fixed rotation mouse tool acting wrong No longer using SPIR-V for terrain shaders, as there was some inconsistent behavior between the shaders and the compiled binaries.
  5. Drag to select functionality should be 100% accurate now and working correctly.
  6. Drag-to-select-area functionality is back, now plays nicely with all mouse tools. Fixed bad brush picking behavior.
  7. Fixed vertex and face tools, which could get weird results that did not align to the current mouse position. Vertex and mouse tools now display the up/down mouse cursor when Alt key is pressed. For now, I will keep the trenchbroom-style controls for these two tools.
  8. Changed the translation tool to use an axis gizmo, like people were asking for. Some backfaces on the gizmo model are currently missing and cannot be picked, and its appearance will improve in future updates.
  9. Some code I used to resize a cubemap. I think the mipmaps might not be correct, but that's okay: Pasting here in case I need it again auto plug = LoadPlugin("Plugins/ISPCTexComp.dll"); auto tex = LoadTexture(GetPath(PATH_DESKTOP) + "/diffuse.dds", LOAD_MIPCHAIN); auto mipchain = tex->mipchain; std::vector<shared_ptr<Pixmap> > chain2; for (auto p : mipchain) { { p = p->Convert(TEXTURE_RGBA16); p = p->Resize(256, 256); p = p->Convert(TEXTURE_BC6H); chain2.push_back(p); } } SaveTexture(GetPath(PATH_DESKTOP) + "/thumbnail_diffuse.dds", TEXTURE_CUBE, chain2, 6); return 0;
  10. Here is some code that uses it, but I just can't seem to get it to work right. I don't think there is an error in my code. I had to fix this file for C++17. Maybe that is causing it? I do not understand these functions: misc.h int VertMap(const std::vector<int>& collapse_map, int a, int mx) { if (mx <= 0) return 0; while (a >= mx) { a = collapse_map[a]; } return a; } std::vector<linalg::aliases::float3> vert; std::vector<tridata> tri; std::vector<int> collapse_map; std::vector<int> permutation; tridata t; for (const auto& v : mesh->vertices) { vert.push_back(linalg::aliases::float3(v.position.x, v.position.y, v.position.z)); } for (int n = 0; n < mesh->CountPrimitives(); ++n) { t.v[0] = mesh->GetPrimitiveVertex(n, 0); t.v[1] = mesh->GetPrimitiveVertex(n, 1); t.v[2] = mesh->GetPrimitiveVertex(n, 2); tri.push_back(t); } //----------------------------- // Reduce the mesh //----------------------------- ProgressiveMesh(vert, tri, collapse_map, permutation); //----------------------------- // PermuteVertices //----------------------------- // rearrange the vertex Array std::vector<float3> temp_Array; unsigned int i; assert(permutation.size() == vert.size()); for (i = 0; i < vert.size(); i++) { temp_Array.push_back(vert[i]); } for (i = 0; i < vert.size(); i++) { vert[permutation[i]] = temp_Array[i]; } // update the changes in the entries in the triangle Array for (i = 0; i < tri.size(); i++) { for (int j = 0; j < 3; j++) { tri[i].v[j] = permutation[tri[i].v[j]]; } } //----------------------------- // Build new mesh //----------------------------- model->Clear(); mesh->extra = nullptr; mesh = model->AddMesh(); std::vector<int> newvertex(vert.size()); std::fill(newvertex.begin(), newvertex.end(), -1); //Add triangles int a, b, c, p0, p1, p2; int render_num = vert.size() * 0.5; for (unsigned int i = 0; i < tri.size(); i++) { p0 = VertMap(collapse_map, tri[i].v[0], render_num); p1 = VertMap(collapse_map, tri[i].v[1], render_num); p2 = VertMap(collapse_map, tri[i].v[2], render_num); if (p0 == p1 or p1 == p2 or p2 == p0) continue; a = newvertex[p0]; if (a == -1) { a = mesh->AddVertex(vert[p0].x, vert[p0].y, vert[p0].z); newvertex[p0] = a; } b = newvertex[p1]; if (b == -1) { b = mesh->AddVertex(vert[p1].x, vert[p1].y, vert[p1].z); newvertex[p1] = b; } c = newvertex[p2]; if (c == -1) { c = mesh->AddVertex(vert[p2].x, vert[p2].y, vert[p2].z); newvertex[p2] = c; } //int a = mesh->AddVertex(vert[p0].x, vert[p0].y, vert[p0].z); //int b = mesh->AddVertex(vert[p1].x, vert[p1].y, vert[p1].z); //int c = mesh->AddVertex(vert[p2].x, vert[p2].y, vert[p2].z); mesh->AddPrimitive(a, b, c); } mesh->UpdateBounds(); model->UpdateBounds();
  11. Changed the way the preview server works. I think this will be more reliable. Currently it is rather slow to generate new thumbnails but I think it will get faster.
  12. Asset browser search bar now acts as a filter, includes a drop-down box with some pre-defined file types. Removed grab-object-to-rotate behavior.
  13. Fixed Camera::SetUniform texture overload. Added Camera::SetUniform material overload. Added Camera::SetUniform entity overload.
  14. "No source file found" just means the original image file the file was converted from does not exist, or might not be included. Leadwerks does not save image files, it just converts images into the custom texture format. Ultra can actually load Leadwerks .tex files and save in different image formats.
  15. 0.9.6 In this build the terrain creation works more like Leadwerks, where it is created by first selecting the terrain tool. You don't have to worry about selecting the terrain to edit it, it just works. Try it and let me know what you think. The way it is stored in the map file has not changed. LOD for orthographic cameras is fixed.
  16. Leadwerks does not work with non-western characters in the project path. You must select a folder with only "normal" characters in the path. (Ultra does support unicode).
  17. I would actually like do make a modern version of our old tropical island from LW2
  18. What matters is, what is best for us?
  19. This change would allow us to get vegetation working sooner, with fewer bugs and ongoing problems.
  20. 0.9.6 Added right-click on file "Convert File to XXX..." menu item for all converters in asset browser. Added right-click on folder "Batch Conversion" menu item in asset browser.
  21. Yeah, I am actually looking into some stuff like that now...
  22. Doing that would require two things. With really big worlds, you need a terrain system that recursively subdivides, because normal terrain LOD isn't big enough. With a normal terrain LOD system where the terrain is divided into patches, eventually you can zoom out so far that each patch is just one pixel big. So you need a different way of handling that. You also need a way to warp the terrain to a sphere, and have it affect physics, raycasting, culling, as well as the rendering. I plan on doing stuff like this in the future, but not with our standard terrain system.
  23. Yeah, but that will require an entirely separate terrain system, and it's not something important to worry about right now.
×
×
  • Create New...