Tài liệu
Bắt đầu
Yêu cầu, cài đặt và đối tượng đầu tiên: thiết lập NanoGeo, hệ thống virtualized geometry cho Unity 6 với HDRP hoặc URP.
Tổng quan
NanoGeo làm gì
NanoGeo cho phép dùng các mesh rất chi tiết, hàng trăm nghìn đến hàng triệu tam giác, mà vẫn giữ được khung hình tốt. Bạn không cần làm mesh LOD hay thiết lập LOD Group.
Khi thêm NanoGeo vào một đối tượng, mesh được chia thành các mảnh nhỏ tối đa 128 tam giác và các phiên bản đơn giản hơn được chuẩn bị ở nhiều mức chi tiết. Bước này gọi là bake. Khi game chạy, GPU chọn cho từng phần của từng đối tượng phiên bản đơn giản nhất mà trên màn hình vẫn trông giống hệt, bỏ qua phần nằm ngoài màn hình hoặc bị các đối tượng NanoGeo khác che, và vẽ phần còn lại. Lượng được vẽ phụ thuộc vào việc đối tượng chiếm bao nhiêu màn hình, không phụ thuộc mesh chi tiết đến đâu.
Không có gì bị hỏng
Đối tượng của bạn vẫn là GameObject bình thường với MeshFilter, MeshRenderer và các material quen thuộc. Ánh sáng, bóng đổ, decal, SSAO, motion vector và hậu kỳ hoạt động như thường. Nếu NanoGeo không vẽ được một đối tượng, đối tượng đó tiếp tục dùng MeshRenderer và Inspector cho biết lý do.
Yêu cầu
Unity và render pipeline
Unity 6000.0.84f1 trở lên (mọi phiên bản Unity 6), với HDRP 17 hoặc URP 17. Built-in Render Pipeline không được hỗ trợ.
Với URP, hãy giữ Render Graph bật, đây là mặc định. Unity 6000.0 đến 6000.2 vẫn cho bật Compatibility Mode (tắt Render Graph). Khi đó NanoGeo vẫn vẽ mọi thứ, nhưng occlusion culling, software rasterizer và các chế độ visualization bị tắt, và cửa sổ NanoGeo hiện cảnh báo. Unity 6000.3 trở lên luôn dùng Render Graph.
Card đồ hoạ
NanoGeo làm được đến đâu phụ thuộc vào card đồ hoạ.
- Đầy đủ
- Direct3D 12 hoặc Vulkan trên GPU đời gần đây. Mọi thứ đều hoạt động.
- Chỉ phần cứng
- Direct3D 11 và Metal. Mọi thứ hoạt động trừ software rasterizer, phần tăng tốc cho các tam giác rất nhỏ. Dự án mới tạo bằng Unity 6000.0 mặc định dùng Direct3D 11; từ 6000.1 dự án mới dùng Direct3D 12. Bạn có thể đổi trong Project Settings > Player > Other Settings > Graphics APIs for Windows.
- Dự phòng
- Thiết bị không chạy được NanoGeo. Mọi đối tượng được vẽ bằng MeshRenderer như thể NanoGeo không có ở đó.
Bake
Bake chạy trong 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.
Mesh phải bật Read/Write trong import settings để Editor đọc được khi bake. NanoGeo có thể bật giúp bạn, xem Nhiều đối tượng cùng lúc.
Cài đặt
Import gói
- Import gói. Mọi thứ nằm trong
Assets/RoamMoon/NanoGeoForUnity. Đừng di chuyển file ra khỏi thư mục này. - Đợi Unity import xong. NanoGeo tạo thiết lập của nó và tạo các phiên bản NanoGeo của shader HDRP Lit và URP Lit cho các phiên bản pipeline bạn đã cài.
- Mở Window > Analysis > NanoGeo Visualization. Nếu có cảnh báo về BatchRendererGroup Variants, bấm Fix. Bản build game cần thiết lập này. NanoGeo không bao giờ tự đổi nó nếu bạn không bấm nút.
HDRP và URP
Với HDRP, Custom Pass phải được bật trong HDRP asset và trong camera frame settings. Mặc định nó đã bật. Với URP không cần đổi gì.
Nếu sau này bạn cập nhật HDRP hoặc URP, hãy chạy Tools > NanoGeo > Regenerate Shaders một lần.
Đối tượng đầu tiên
Thêm component
- Chọn một đối tượng có MeshFilter và MeshRenderer. Material của nó nên là HDRP Lit, URP Lit hoặc HDRP Shader Graph. Nếu đối tượng nằm trong LOD Group, hãy chọn đối tượng LOD0.
- Bấm Add Component và thêm
NanoGeoMesh. - Đợi vài giây trong khi mesh được bake. Một mesh một triệu tam giác mất khoảng bốn giây trên CPU desktop nhanh.
- Inspector giờ hiện “Rendered by NanoGeo”. Xong.
Material và dự phòng
Material và MeshRenderer của bạn vẫn nằm trên đối tượng. NanoGeo tạo bản sao material riêng và luôn cập nhật nó. Nếu bạn sửa material mà đối tượng NanoGeo chưa hiện thay đổi, hãy tắt rồi bật lại đối tượng hoặc bấm Play.
Để vẽ lại một đối tượng bằng MeshRenderer, tick Force Fallback trên component, hoặc gỡ component.
Bake dùng thư viện meshoptimizer của Arseny Kapoulkine, theo giấy phép MIT. Thư viện chỉ chạy trong Editor và không nằm trong bản build game của bạn.