Virtualized geometry cho Unity
NanoGeo
NanoGeo là hệ thống virtualized geometry cho Unity. Nó cho phép dựng cảnh với hàng tỷ tam giác, từ một tỷ đến hàng chục tỷ, dùng các mesh cực kỳ chi tiết. Không phải làm LOD thủ công.
Cách hoạt động
Chia thành cluster
NanoGeo chia mỗi mesh thành các cluster nhỏ, tối đa 128 tam giác, và dựng sẵn nhiều mức chi tiết ngay trong Editor. Bạn chỉ cần thêm component NanoGeo Mesh.
Chỉ vẽ phần nhìn thấy
Khi game chạy, GPU chỉ chọn mức chi tiết bạn thực sự nhìn thấy trên màn hình, bỏ qua phần bị che hoặc nằm ngoài màn hình, và vẽ phần còn lại.
Chi phí theo màn hình
Chi phí phụ thuộc vào kích thước trên màn hình, không phụ thuộc số tam giác trong cảnh. Trong benchmark của chúng tôi, NanoGeo chỉ vẽ khoảng 92 nghìn tam giác mỗi khung hình trong tổng số khoảng 500 triệu.
Nhanh hơn bao nhiêu
Cảnh benchmark có 381 tảng đá, mỗi tảng 1,3 triệu tam giác, tổng cộng 499 triệu tam giác. NVIDIA RTX 5070, 1080p, bật bóng đổ.
500
FPS
NanoGeo
Thời gian GPU mỗi khung hình: 1,73 ms
270
FPS
GPU Resident Drawer với LOD Group
Thời gian GPU mỗi khung hình: 3,72 ms
6
FPS
MeshRenderer thông thường
Thời gian GPU mỗi khung hình: 161,5 ms
NanoGeo chỉ vẽ khoảng 92.000 tam giác mỗi khung hình trong tổng số khoảng 500 triệu.
Khi nào nên dùng
Từ vài triệu đến hàng tỷ tam giác: mô hình scan hoặc sculpt và các môi trường lớn nhiều chi tiết. Càng nhiều geometry thì lợi ích càng lớn.
- Thế giới mở và môi trường lớn với nhiều đạo cụ chi tiết
- Photogrammetry và mô hình 3D scan dùng thẳng từ bản scan
- Mô hình sculpt high poly từ ZBrush hoặc Blender, không cần retopo hay LOD
- Trình diễn kiến trúc, nội thất và sản phẩm
- Cinematic và trailer thời gian thực
- Bộ asset lớn: thêm NanoGeo cho hàng trăm prefab chỉ với một cú nhấp
Không phù hợp với cảnh nhẹ
- thời gian GPU cố định mỗi khung hình
- 0,3 ms
- bộ nhớ video dùng thêm
- 0,5 GB
- FPS trong một cảnh nhẹ
- 300 → 275
Các chi phí này cố định, kể cả khi có rất ít thứ để vẽ. Ở 60 FPS thì chênh lệch dưới 1 FPS.
Nếu cảnh của bạn đã chạy tốt với mô hình thường và LOD, có thể bạn không cần NanoGeo. Dùng Tools > NanoGeo > Disable NanoGeo để so sánh ngay trong cảnh của bạn.
Bạn nhận được gì
- Một component
- MeshRenderer và material của bạn giữ nguyên.
- HDRP và URP
- Ánh sáng, bóng đổ, decal, SSAO, light probe, TAA và hậu kỳ trông giống như trước.
- Material
- HDRP Lit, URP Lit và HDRP Shader Graph, gồm cả alpha clipping (lá cây, hàng rào) và material hai mặt.
- Đối tượng
- LOD Group, đối tượng lật gương và đối tượng chuyển động.
- Occlusion culling
- Chạy trên GPU, nên vật bị che sau vật khác được bỏ qua tự động.
- NanoGeo Mesh Prefab
- Thiết lập cả prefab hoặc cả thư mục prefab, kèm cảnh báo và sửa lỗi một cú nhấp.
- Chẩn đoán
- Các chế độ visualization, thống kê và thời gian GPU cho thấy NanoGeo đang làm gì.
- Trong gói
- Scene demo cho HDRP và URP, công cụ benchmark và hướng dẫn sử dụng đầy đủ dạng PDF.
Yêu cầu và giới hạn
- Unity
- Unity 6000.0.84f1 trở lên, tức mọi phiên bản Unity 6.
- Render pipeline
- HDRP 17 hoặc URP 17. Built-in Render Pipeline không được hỗ trợ.
- Bake
- Editor trên Windows 64 bit. Game build cho nền tảng khác dùng được dữ liệu đã bake trên Windows.
- Graphics API
- Direct3D 12 hoặc Vulkan để dùng đầy đủ. Direct3D 11 và Metal chạy được nhưng không có software rasterizer, phần tăng tốc cho các tam giác rất nhỏ.
- Không hỗ trợ
- Các đối tượng sau vẫn dùng MeshRenderer thông thường: skinned mesh và blend shape, material trong suốt, terrain, tessellation, URP Shader Graph, shader viết tay, và đối tượng có lightmap đã bake (hãy dùng light probe thay thế).
Asian Dynasty Environment của Befour Studios, dùng ở đây để cho thấy NanoGeo trong một cảnh thực tế. Môi trường này không đi kèm NanoGeo.
meshoptimizer của Arseny Kapoulkine, giấy phép MIT. Thư viện chỉ chạy trong Editor và không nằm trong bản build.
Bắt đầu một câu chuyện mới
Kể cho chúng tôi nghe điều bạn muốn xây dựng.
Một ý tưởng trò chơi, một bài toán dữ liệu, hay một hệ thống đã chạy nhiều năm và cần người đồng hành,... cứ mô tả ngắn gọn, bạn sẽ nhận được phản hồi từ chính chúng tôi.
Bắt đầu một dự án