Gần đây tôi đã bắt đầu phát triển động cơ voxel. Những gì tôi cần chỉ là voxels đầy màu sắc mà không có kết cấu, nhưng với số lượng rất lớn (nhỏ hơn nhiều so với minecraft) - và câu hỏi là làm thế nào để vẽ cảnh rất nhanh? Tôi đang sử dụng C#/xna nhưng đây là ý kiến của tôi không phải là rất quan trọng trong trường hợp này, chúng ta hãy nói về trường hợp chung. Nhìn vào hai trò chơi này:Động cơ và tối ưu hóa Voxel
Đặc biệt Tôi nghĩ rằng video số 2 đại diện cho phương pháp tối ưu hóa tuyệt vời (thẻ gfx của tôi bắt đầu nghẹn chỉ tại 192 x 192 x 64) Làm thế nào họ đạt được điều này?
gì tôi sẽ có trong công cụ:
- voxels đầy màu sắc mà không cần kết cấu, nhưng bóng mờ
- nhiều, rất nhiều voxels, nói tối thiểu 512 x 512 x 128 để đạt được một cái gì đó như video # 2
- bóng (bóng mịn sẽ tuyệt vời nhưng không cần thiết)
- tùy chọn: ánh sáng động (ví dụ: từ quả cầu lửa, ánh sáng lên gần cấu trúc voxel)
- Framerate tối thiểu 40 FPS
- camera có 3 cách tự do (di chuyển trong x-trục, di chuyển theo trục y, di chuyển theo trục z), không xoay camera cần
- tính năng cuối cùng tùy chọn có thể Depth of Field (nó sẽ được ngọt ngào ^^)
tối ưu hóa Những gì tôi đã biết:
- loại bỏ voxels vô hình mà nằm bên trong cấu trúc voxel (được nêu fr om sáu hướng bởi voxels khác)
- loại bỏ khuôn mặt vô hình của voxels - bởi vì máy ảnh không có luân chuyển và luôn nhìn xéo về phía trước như trong các trò chơi TPP, vì vậy nếu chúng ta chia màn hình bởi cắt dọc, voxels trái và voxels bên phải sẽ hiển thị chỉ có 3 khuôn mặt
- giữ voxels trong từ điển thay vì mảng 3 chiều - nhảy qua mảng kích thước 512 x 512 x 128 mất mili giây là không được chấp nhận - nhưng từ điển int: màu trong đó mô tả được đóng gói Vị trí 3D nhanh hơn nhiều
- sử dụng tính năng instancing nơi applciable
- kết thúc? (Làm thế nào để làm điều này?)
- không gian phân chia/octtree (là nó ý tưởng tốt?)
Sẽ rất biết ơn nếu ai đó cho tôi một lời khuyên làm thế nào để cải thiện hiện có tối ưu hóa được liệt kê ở trên hoặc có thể chia sẻ ý tưởng về những cải tiến mới. Cảm ơn
Lưu ý rằng cả hai video đều hiển thị công cụ dường như không hỗ trợ xoay vòng. Ngoài ra, video thứ hai có thể sử dụng biển quảng cáo cho các đối tượng lấy nét ngoài các đối tượng voxel. – Skizz