Jump to content

Josh

Staff
  • Posts

    23,127
  • Joined

  • Last visited

Everything posted by Josh

  1. Was it a reply to your showcase thread?
  2. It's actually in there already. extern bool SetFileTime(const WString& path, const uint64_t timestamp);
  3. Fixed terrain vertex shader for non-one scales.
  4. Replaced mouse tool menu items and hotkeys with a single menu item called "Next Tool" that can be activated with Shift + Tab. Vertex mouse tool will now make the selected vertex or edge snap to the nearest grid point. Terrain creation properties changed a little bit. Default terrain scale now set to 1.28, for easy brush alignment.
  5. This is currently not a supported feature, but I am not opposed to adding it. It will just require a little extra care because Ultra has a lot more options when it comes to image handling.
  6. Josh

    Multiple Sublayers

    The main idea of the new foliage system is that multiple sub-layers can be used to randomly choose different models to place for each instance. This allows you to automatically paint a variety of objects onto the scene, without them overlapping.
  7. z coordinate is the distance in front of the camera.
  8. Yes, I always forget which is which. Maybe these should be ScreenToWorld and WorldToScreen?
  9. Josh

    Testing Foliage System

    Weird but cool screenshot that appeared during testing...
  10. Use this overload: void AddHook(const HookID id, void (*hook)(std::shared_ptr<Object> source, std::shared_ptr<Object> extra), std::shared_ptr<Object> extra = nullptr);
  11. I have been waiting a long time for this. From this point things will progress rapidly.
  12. Apparently this requires a closed mesh: https://github.com/melax/sandbox/issues/5#issuecomment-2069836452
  13. 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.
  14. Drag to select functionality should be 100% accurate now and working correctly.
  15. Drag-to-select-area functionality is back, now plays nicely with all mouse tools. Fixed bad brush picking behavior.
  16. 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.
  17. 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.
  18. 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;
  19. 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();
  20. 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.
  21. 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.
×
×
  • Create New...