Войти
ПрограммированиеФорумГрафика

Unlimited Detail (188 стр)

Страницы: 1187 188 189 190223 Следующая »
#2805
3:34, 3 сен. 2013

neumond
> Чем больше вокселей в поле зрения тем меньше фпс (минимал где-то 20).
Что-то очень медленно!
Кролики в таком окошке у меня выдают минимал 200 фпс


#2806
(Правка: 3:45) 3:40, 3 сен. 2013

блин, понял, наконец, что делает тот код. идея занятная, но едва ли это UD, так как обладает совсем другими свойствами. но такое ещё, вроде как, не предлагали тут.

короче суть в следующем. растеризуются фактически столбики из точек. камеру не просто так нельзя в демке крутить вверх-вниз - растеризуются вертикальные столбики из точек и они всегда вертикальны при тех перемещениях, которые в демке разрешены. то есть фактически сначала делается очень быстрый 2д целочисленный рейкастинг по горизонтали и если луч упёрся в непустой "столбик" из точек, то x-координата у всех точек в этом столбике в скринспейсе одинаковая. циклом по ним пробегаемся, получаем y-координаты, блендим.

интересно, кто написал тот пост? едва ли кто-то из завсегдатаев, так как такой идеи я в треде ещё пока не слышал.

#2807
14:18, 3 сен. 2013

Suslik
> так как такой идеи я в треде ещё пока не слышал.
Это вроде алгоритм из voxlap. Он там еще сделал сжатие столбиков и кручение камеры во всех направлениях.

#2808
14:45, 3 сен. 2013

Suslik
> так как такой идеи я в треде ещё пока не слышал
Было. И даже демки - это один из распространенных алгоритмов.

#2809
14:46, 3 сен. 2013

ок, значит я прошлёпал.

#2810
22:48, 4 сен. 2013

Suslik
Okay, I see you understand basic principles. Now let's move to the more complex things. I can't share exact UD algorithm (you must understand me, I've spent years mastering it) but I can express in a code what I have already said in the interviews. The thing I want to say is: you must use sorting and eliminate raycasting.
Sorting algorithm I introduce here is very VERY simple. You can optimize it a lot using octrees and more elegant heuristics than that. But keep it simple.
You've mentioned this http://rghost.net/48541594 dataset, I had some problems downloading it, but I did it that and can say it is good for testing, you may use it with my program.

Here is the code I am talking about. If you're smart enough, you'll get benefit from it.

+ Показать

Binary: 2

In Unlimited Detail engine the sorting is so different and fast you almost can't see it's work - only results. But here you can notice the process of sorting.

#2811
(Правка: 0:38) 0:36, 5 сен. 2013

хммм... я не знаю, кто это, но он пишет ужасающий код - я с таким кодом отправляю своих студентов домой переписывать его и приводить в порядок. но, должен признать, идеи толкает достаточно интересные.

не смотря на то, что код выше, судя по всему, прошёл через обфускатор, попытался в нём разобраться. что я пока понял:
- все точки в мире постоянно динамически сортируются так, что потом при обходе их по порядку будут только те точки, которые попадают в скринспейс и идут первыми в zbuffer'е.
- парень едва ли из местных. у него ip из Бангкока - хотя это может просто прокси.

#2812
(Правка: 1:17) 0:50, 5 сен. 2013

самые загадочные для меня строчки - это здесь:

        int t;for(t=30;t>=0;t--) if (!f1f) { if (cmt&(1<<t)) { f1f = 1; cmt&=~(1<<t); } } else { cmt|=1<<t; }
//...
            int ab = (abs(x) + abs(y) + abs(z)); 
            ab &= cmt;            
            ab = (ab + thresh) * 4;
чего это вообще может значить? по идее ab должно значить номер точки, с которой мы пытаемся поменять текущую.
ещё под завесой тайны остаётся это:
// FIRST SORTING. IT IS SIMPLE, BUT VERY IMPORTANT STAGE FOR THIS ALGORITHM.
    for (i = 0; i < count*4; i+=4) {
        int ri = ((_rand()*_rand())%count)*4;
        SWP(i, ri);
    }
что это за сортировка, которая меняет местами данную точку с рандомной? без каких бы то ни было условий?

интересная особенность алгоритма выше в том, что он даёт характерные артефакты по краям изображения, которые мы видели в UD, использует time coherence и работает за константное время вне зависимости от количества точек в мире. с увеличением количества точек будут лишь более заметны артефакты. reprojection получается вообще бесплатно - точки, которые были видны на прошлом кадре и всё ещё не сортировались, растеризуются в первую очередь. плюс он действительно так себе параллелится на CPU, тем более на GPU. гггммм...

ещё энтропию повышает тот факт, что алгоритм в предыдущем посте не имеет практически ничего общего с алгоритмом из пред-предыдущего поста. weird.

#2813
0:54, 5 сен. 2013

Suslik
> я с таким кодом отправляю своих студентов домой переписывать его и приводить в
> порядок.

Изображение
Изображение
#2814
1:17, 5 сен. 2013

Suslik
> что это за сортировка, которая меняет местами данную точку с рандомной? без
> каких бы то ни было условий?
рандомная то рандомная, но распределение неравномерное.

#2815
1:19, 5 сен. 2013

Super_inoy
> рандомная то рандомная, но распределение неравномерное.
если точки просто мешать псевдорандомом, они никогда не отсортируются, каким бы ни был псевдорандом, если нет критерия сортировки. мне кажется, этот шаг нужен просто чтобы изначальное изображение было более-менее случайным, а не последние N загруженных точек.

#2816
1:24, 5 сен. 2013

>парень едва ли из местных
>парень
Изображение

#2817
(Правка: 1:28) 1:24, 5 сен. 2013

Suslik
> если точки просто мешать псевдорандомом, они никогда не отсортируются
не отсортируются, но количество операций "сортировки" над ближними индексами тут будет больше
Suslik
> если нет критерия сортировки
индекс же.

да и
свап тут несколько крутой
#define SWP(A, B) { int as;for(as=0;as<4;as++){tmp[as]=data[A+as];data[A+as]=data[B+as];data[B+as]=tmp[as];}} зачем в нём tmp массивом... брррр какая жесть

#2818
(Правка: 1:30) 1:29, 5 сен. 2013

Super_inoy
> индекс же.
что индекс? условия нет. как ты определишь, отсортирует такая сортировка массив по убыванию или возрастанию? она его просто перемешивает а не сортирует.

Super_inoy
> свап тут несколько крутой
обыкновенный swap - точки хранятся четвёрками интов - xyz(3 инта) + rgb(1 инт).

#2819
(Правка: 1:35) 1:33, 5 сен. 2013

Suslik
> отсортирует такая сортировка массив по убыванию или возрастанию?
сортировка в ковычках же, это неравномерное перемешивание. Нафига неравномерное непонятно(присмотрись к смыслу cmt).

Suslik
> обыкновенный swap - точки хранятся четвёрками интов - xyz(3 инта) + rgb(1 инт).
меня смутила временна переменная являющаяся массивом при том что свапаются элементы по 1, я даже было подумал что тролль tmp потом где-то использовал после свапа, джаст фор лулз

Страницы: 1187 188 189 190223 Следующая »
ПрограммированиеФорумГрафика