Pytania i odpowiedzi
W razie wątpliwości co do treści zadania, zapraszamy do zadawania pytań uściślających. Pytania podlegają następującym zasadom:
- Pytania muszą dotyczyć zadania konkursowego.
- Odpowiedzi (wraz z pytaniem) są publikowane tylko na niniejszej stronie, aby każdy uczestnik mógł się z nimi zapoznać.
Ostatnia aktualizacja: 2019-06-07 15:42
Q: Dlaczego kompilator nie rozwinął pętli w moim shaderze, mimo, że liczba jej przebiegów jest z góry znana?
A: W naszym konkursie do optymalizacji shaderów wykorzystujemy narzędzie open-source do obróbki SPIR-V, SPIR-V Tools. Jak każdy optymalizator - nie jest doskonały. Najczęstszymi powodami porażki przy próbach rozwijania pętli są:
- liczniki pętli niebędące liczbą całkowitą,
- trudne do uproszczenia do stałej znanej w czasie kompilacji wyrażenia indukcyjne pętli,
- przeskoki w grafie przepływu kontroli (np. wyrażenie
continue
lub break
).
Spróbuj uprościć wyrażenie kontrolujące pętlę, upewnij się, że jej licznik jest liczbą całkowitą, oraz ogranicz użycie wyrażeń break
i continue
.
Q: Co oznacza wartość czasu w rankingu?
A: Oznacza czas działania potoku oceniającego. Nie ma on przełożenia na wydajność shadera, gdyż większość z tego czasu spędzana jest przez kompilator na optymalizacji kodu shadera. Nie jest również brany pod uwagę w ustalaniu miejsca w rankingu.
Q: Jaki jest cel użycia RMSE jako metryki? Nie jest ona zgodna z ludzką percepcją.
A: Zgadza się, i nie mamy ambicji w sposób ścisły mierzyć perceptualnego podobieństwa. RMSE jest bardziej "środkiem dyscyplinującym", niż znaczącą osią oceny - chcemy w ten sposób odsiać rozwiązania, które renderują obraz kompletnie różny od oczekiwanego.
Q: Jakie są wartości kolorów kształtów?
A: Tło: vec3(1.0, 0.0, 0.0)
Elipsa: vec3(1.0, 1.0, 0.0)
Q: Czy anty-aliasing jest wyliczany w przestrzeni gamma, czy liniowej?
A: Korekcja gammy i sRGB są dla uproszczenia w ogóle pominięte, dlatego proponujemy przyjąć, że w liniowej.
Q: Czy możemy zobaczyć obraz różnicy wobec wzorca?
A: Pracujemy nad tym.
Q: Taka definicja RMSE oznacza, że jest zależna od rozdzielczości. Dlaczego nie możemy jej poznać?
A: Pragniemy uniknąć "rozwiązań", które wpisują pewne wartości "na sztywno" i przestają działać, kiedy zmienia się rozdzielczość. Zachęcamy do eksploracji rozwiązań niezależnych od rozdzielczości, a wartość RMSE proponujemy potraktować jako arbitralną.
Q: Jak zdefiniowana jest funkcja błędu, RMSE?
A: W najprostszy możliwy sposób:
- Operację wykonujemy na finalnej, skwantyzowanej do 8 bitów na kanał (wartości 0-255) postaci bufora klatki.
- Suma S = 0.
- Dla każdego kanału (RGB) każdego piksela obrazu testowanego:
- Wyliczamy różnicę wobec odpowiadającego kanału odpowiadającego piksela obrazu referencyjnego.
- Różnicę tę podnosimy do kwadratu i dodajemy do sumy S.
- Uśredniamy sumę S: dzielimy ją przez liczbę wszystkich zmierzonych próbek, tj. S = S / (szerokość obrazu x wysokość x 3) (kanały RGB).
- Wartością RMSE obrazu jest pierwiastek kwadratowy z S.
Q: Jak zdefiniowany jest anty-aliasing?
A: Wartością zielonej składowej każdego piksela obrazu jest przybliżenie pokrycia, czyli proporcja powierzchni piksela (tj. jego kwadratowego sąsiedztwa), jaką zajmuje elipsa. RMSE o wartości dokładnie 0 można uzyskać 1024-krotnym supersamplingiem, tj. potraktowaniem każdego piksela jako sub-obrazek o wymiarach 32x32 i uśrednieniu wyników testów.
Q: A co mają powiedzieć biedni programiści gameplayu, którzy nie mają pojęcia o shaderach?
A: Proponujemy powiedzieć: "hmm, może to jest dobry sposób, żeby zacząć pisać shadery?" Dysponujemy przyspieszonym kursem.
Q: W jakiej rozdzielczości renderowany jest obraz testowy?
A: Kilkadziesiąt klatek animacji z wybranych momentów czasu (tj. wartości iTime
) jest renderowanych do atlasu. Klatek tych jest 25 w układzie 5x5. Każda z nich ma inną rozdzielczość: poczynając od 126x126 w lewym dolnym rogu, składowa pozioma rośnie o 1 piksel w każdej kolumnie, a składowa pionowa - o 1 piksel w każdym wierszu, kończąc na 130x130 w prawym górnym rogu.
Q: Dlaczego waga RMSE w pierwszym zadaniu jest tak duża?
A: Zadanie traktujemy jako rozgrzewkę z małą przestrzenią do optymalizacji, dlatego zamiast tego kładziemy nacisk na wierność odwzorowania. W następnych zadaniach wagi będą przyjmować inne wartości.
Q: Czy prędkość animacji ma znaczenie? Jeśli tak, to jak mam to zmierzyć, w jednym oknie mogę mieć mniej FPS-ów, niż w drugim?
A: Nie ma znaczenia, system oceniający w pełni kontroluje prędkość animacji podczas oceny.