Bỏ qua điều hướng, tới nội dung chính
Giới thiệu NanoGeo

Tài liệu

Tham chiếu

Tham chiếu NanoGeo: scripting API, menu Editor, xử lý sự cố, giới hạn đã biết, nền tảng đã thử và công cụ benchmark.

Scripting

NanoGeoMesh

errorThresholdPixels, shadowErrorMultiplier, shadowMinLodLevel, castShadows và forceFallback có thể đổi lúc chạy. isRenderedByNanoGeo cho biết NanoGeo có vẽ đối tượng hay không, fallbackReason cho biết vì sao không.

NanoGeoManager

enabled
Bật hoặc tắt NanoGeo cho cả game.
current
Instance đang chạy, hoặc null. current.stats có các thống kê hiển thị trong cửa sổ NanoGeo.
registered
Liệt kê mọi component NanoGeoMesh.
failureReason
Giải thích vì sao NanoGeo không chạy.
ResetAll()
Khởi động lại NanoGeo.

NanoGeoDebug

SetMode(mode) đổi chế độ visualization, freezeCulling đóng băng culling, available là true trong Editor và Development build.

NanoGeoOcclusion và NanoGeoSoftwareRaster

Cả hai đều có enabled và SetEnabled(camera, value).

NanoGeoProfiling

Đặt recording thành true, rồi đọc GpuMilliseconds(pass) hoặc TotalGpuMilliseconds. Chỉ trong Editor và Development build.

Xử lý sự cố

Một đối tượng không được NanoGeo vẽ

Chọn nó và đọc thông báo trong Inspector của NanoGeoMesh, hoặc xem danh sách trong cửa sổ NanoGeo. Các lý do thường gặp là mesh tắt Read/Write, material trong suốt, material không phải HDRP Lit, URP Lit hay HDRP Shader Graph, và lightmap đã bake.

Mọi đối tượng đều dùng MeshRenderer

Nếu Inspector báo NanoGeo đang tắt, hãy chạy Tools > NanoGeo > Enable NanoGeo.

Đối tượng trong LOD Group báo bị LOD0 thay thế

Đó là điều bình thường. NanoGeoMesh ở LOD0 vẽ nó ở mọi khoảng cách.

Đối tượng biến mất một lúc

Sau khi bạn thêm NanoGeoMesh hoặc đổi material, một shader variant mới đang biên dịch. Đối tượng xuất hiện khi nó xong.

Bản sao prefab mới chạy, bản cũ thì không

Các bản sao đã có sẵn trong scene dùng lightmap đã bake. Hãy đặt Receive Global Illumination thành Light Probes, xem Lightmap đã bake.

URP Render Graph Compatibility Mode đang bật

Tắt nó trong Project Settings > Graphics > Render Graph. NanoGeo vẫn vẽ trong cả hai trường hợp, nhưng occlusion culling, software rasterizer và các chế độ visualization cần Render Graph.

Chạy trong Editor nhưng không chạy trong bản build

BatchRendererGroup Variants chưa được đặt là Keep All, xem Cài đặt.

Đối tượng bị màu hồng

Chạy Tools > NanoGeo > Regenerate Shaders, thường cần sau khi cập nhật HDRP hoặc URP.

Lỗi shader nhắc đến pipeline bạn không dùng

Chạy Tools > NanoGeo > Regenerate Shaders.

Visualization không hiện gì trên HDRP

Kiểm tra Custom Pass đã được bật trong HDRP asset và trong camera frame settings.

File trong Generated “was serialized with a newer version of Unity”

Thư mục Generated được sao chép từ một bản Unity mới hơn. Hãy xoá thư mục Generated; NanoGeo tạo lại mọi thứ. Để chia sẻ NanoGeo, dùng Tools > NanoGeo > Export Package.

Bộ nhớ video dùng nhiều

Hạ kích thước buffer hoặc đặt streaming budget, xem Làm cho nhanh hơn.

Các vệt tự đổ bóng

Tăng shadow bias của đèn, hoặc giảm Shadow Error Multiplier.

Giới hạn và nền tảng đã thử

Giới hạn

Bake chỉ chạy trong Editor trên Windows. Streaming chỉ tiết kiệm bộ nhớ video. MeshRenderer thông thường không che được đối tượng NanoGeo. Bóng đổ luôn dùng rasterizer GPU thông thường. URP Shader Graph chưa được chuyển đổi.

Nền tảng đã thử

Bộ kiểm thử đầy đủ đạt trên Unity 6000.0 (HDRP và URP 17.0), 6000.5 (HDRP và URP 17.5) và 6000.6 (HDRP và URP 17.6), trên Direct3D 11 và Direct3D 12, trên Windows với NVIDIA RTX 5070. Unity 6000.1 đến 6000.4 chưa được chạy; mã được kiểm tra đối chiếu với scripting API của chúng. Shader Vulkan và Metal biên dịch được nhưng chưa chạy trên thiết bị, và Linux, macOS chưa được thử.

Benchmark

Gói có kèm các công cụ dùng để đo NanoGeo. Chúng là tuỳ chọn.

Chạy benchmark

  1. Chạy Tools > NanoGeo > Benchmarks > Generate Benchmark Scene (HDRP). Nó tạo một tảng đá 1,3 triệu tam giác, các LOD để so sánh và các scene trong Generated/Benchmark. Dữ liệu này lớn và có thể xoá bất cứ lúc nào.
  2. Chạy Tools > NanoGeo > Benchmarks > Build Benchmark Players (Development). Các player được ghi vào Builds/NanoGeo cạnh dự án.
  3. Chạy từng NanoGeoBenchmark.exe. Nó bay qua cảnh từ 1 đến 500 triệu tam giác ở 1080p và 1440p, ghi NanoGeoBenchmark.csv rồi thoát.

Kết quả

Trên RTX 5070 ở 1080p có bóng đổ, 500 triệu tam giác nguồn mất 1,73 ms thời gian GPU mỗi khung hình với NanoGeo, 3,72 ms với GPU Resident Drawer và LOD Group, và 161,5 ms với MeshRenderer thông thường. Với một tảng đá 1,3 triệu tam giác thì chênh lệch nhỏ (1,57 ms so với 1,93 ms). Số liệu đo nằm trong Samples/Benchmark/Results.

Hãy kỳ vọng mức lợi lớn ở các cảnh có hàng triệu tam giác và mức lợi nhỏ ở các cảnh đã có LOD tốt.

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.