Stworzyłem prosty projekt, w którym około. 7000 sześcianów jest tworzonych w scenie (z kamerą VR), ale problem polega na tym, że kiedy poruszam kamerą, aby zobaczyć wszystkie kostki, FPS staje się bardzo zły, podobnie jak 5-6 klatek. Mój komputer to i7 z GTX 1070, i pomyślałem, że musi on narysować setki tysięcy kostek bez żadnych problemów. Naprawdę, widziałem Minecrafta, wygląda na to, że nie ma problemów z rysowaniem kostek))Jedność tarła wiele obiektów w czasie wykonywania wolny
Pytanie brzmi więc, czy można zoptymalizować scenę tak, aby wszystkie kostki były malowane jednym wezwaniem czy czymś, co zapewni dobrą wydajność?
ja faktycznie wszystkie kostki statyczne i nie ma tekstury tylko standardowy materiał ...
Używam domyślny światło kierunkowe i byłoby bądź dobry, aby nie zmieniać standardowego shadera z powodu jego świetnej pracy ze światłem.
Oto jak ja generowania kostki:
private void AddCube(Vector3 coords)
{
var particle = (Transform)MonoBehaviour.Instantiate(prototype.transform, holder.transform);
SetScale(particle);
SetPosition(particle, coords);
cubes.Add(particle.gameObject);
particle.gameObject.isStatic = true;
}
private void SetScale(Transform particle)
{
particle.localScale = new Vector3(Scale, Scale, Scale);
}
private void SetPosition(Transform particle, Vector3 coords)
{
particle.position = coords;
}
To jest zrzut ekranu statystyka: mam tutaj 41 fps, bo przeniósł aparat z dala od kostek mieć czyste tło dla statystyk płyta. Właściwie po tym, jak robię "statyczne" kostki, FPS zależy od tego, czy kostki są widoczne na ekranie, czy nie.
Jakie masz oświetlenie? Czy pozywasz GI w czasie rzeczywistym? Również standardowy moduł cieniujący jest dość drogi, więc jako pierwszy krok optymalizacji sugerowałbym zmianę go na przestarzały Diffuse. –
Minecraft nie ma tylu obiektów co sześcian. Łączą kostkę, aby wykonać tylko jedną siatkę. A więc siatka (na przykład) 256 kostek. Dokładnie to, co możesz zrobić, ale ponieważ powiedziałeś, że kostka może się poruszać, musisz zregenerować wszystkie za każdy ruch, aby nie było to rozwiązanie. – Alaanor
Pokaż nam kod z generacją kostki. Ponadto, w widoku Gry, naciśnij Statystyki w prawym górnym rogu i pokaż zrzut ekranu okien statystyk. Podejrzewam, że renderowanie połączeń rysunkowych będzie bardzo wysokie. –