ПроектыФорумКонкурсы

Перезапуск конкурса "Retro software rendering". [-=Результаты=-] (54 стр)

Страницы: 151 52 53 54 55 56 Следующая »
#795
0:20, 18 июля 2016

122
> Кстати замечу, что был шокирован низким фпс на мобильном i7 Кипара, из #738. И
> это проц не планшетный даже, а классом выше, мобильный.)
Угу, я тоже был огорчен. И в конкурсе то не участвовал после того как увидел что у меня заливка пустым фоном на i7 дает 100фпс, списал на свою криворукость и дальше не стал пробовать.

#796
9:49, 18 июля 2016

Vitorio
> А поиск ближайшего куба как выполняется? По формуле от координат расположения камеры?
Конечно, тут даже не поиск, а вычисление.
Vitorio
> Однократным нажатием клавиши я отсортировывал сцену и далее смотрел на fps без
> затрат на сортировку. Влияние на fps было порядка 1-2 fps при 800x600.
Достаточно эффективно получилось.
Vitorio
> Сделал проверку на CCW расположение вершин полигона еще до этапа растеризации
Оно вообще не нужно в данном случае. У меня массив входных данных vCube() - всего 8 вертексов, для одного куба, даже не 24, с учётом разных текстурных координат. Текстурные координаты добавляются при умножении вертекса на матрицу трансформации - TexVTransform. Причём координаты не 0..1, а 0..16, чтобы при выборке не домножать на ширину текстуры в пикселях. Видимость сторон куба определяется заранее исходя из координат камеры и куба, рассчитываются вертексы только видимых сторон, у них CCW по определению положительный.

Public Sub DrawCube(C As tCube)
  Const CubeHSZ As Single = 0.25 ' Полуразмер куба
  Dim M1 As Matrix

  RD.pTex = C.Tex ' Указатель на текстуру
  MatrixTranslation M1, -C.Pos.x, -C.Pos.y, -C.Pos.z
  MatrixMultiply M1, M1, MView

  If CamPos.z < C.Pos.z - CubeHSZ Then ' Фронт
    TexVTransform vScr(0), vCube(6), M1, 0, 0
    TexVTransform vScr(1), vCube(7), M1, 16, 0
    TexVTransform vScr(2), vCube(4), M1, 0, 16
    TexVTransform vScr(3), vCube(5), M1, 16, 16
    DrawTriangle vScr(), 0, 1, 3
    DrawTriangle vScr(), 0, 3, 2
  ElseIf CamPos.z > C.Pos.z + CubeHSZ Then ' Тыл
    TexVTransform vScr(0), vCube(2), M1, 0, 0
    TexVTransform vScr(1), vCube(3), M1, 16, 0
    TexVTransform vScr(2), vCube(0), M1, 0, 16
    TexVTransform vScr(3), vCube(1), M1, 16, 16
    DrawTriangle vScr(), 0, 1, 3
    DrawTriangle vScr(), 0, 3, 2
  End If

  If CamPos.y > C.Pos.y + CubeHSZ Then ' Верх
    TexVTransform vScr(0), vCube(0), M1, 0, 0
    TexVTransform vScr(1), vCube(1), M1, 16, 0
    TexVTransform vScr(2), vCube(4), M1, 0, 16
    TexVTransform vScr(3), vCube(5), M1, 16, 16
    DrawTriangle vScr(), 0, 1, 3
    DrawTriangle vScr(), 0, 3, 2
  ElseIf CamPos.y < C.Pos.y - CubeHSZ Then ' Низ
    TexVTransform vScr(0), vCube(2), M1, 0, 0
    TexVTransform vScr(1), vCube(3), M1, 16, 0
    TexVTransform vScr(2), vCube(6), M1, 0, 16
    TexVTransform vScr(3), vCube(7), M1, 16, 16
    DrawTriangle vScr(), 0, 1, 3
    DrawTriangle vScr(), 0, 3, 2
  End If

  If CamPos.x > C.Pos.x + CubeHSZ Then ' Правая сторона
    TexVTransform vScr(0), vCube(0), M1, 0, 16
    TexVTransform vScr(1), vCube(2), M1, 0, 0
    TexVTransform vScr(2), vCube(4), M1, 16, 16
    TexVTransform vScr(3), vCube(6), M1, 16, 0
    DrawTriangle vScr(), 0, 1, 3
    DrawTriangle vScr(), 0, 3, 2
  ElseIf CamPos.x < C.Pos.x - CubeHSZ Then ' Левая сторона
    TexVTransform vScr(0), vCube(1), M1, 0, 16
    TexVTransform vScr(1), vCube(3), M1, 0, 0
    TexVTransform vScr(2), vCube(5), M1, 16, 16
    TexVTransform vScr(3), vCube(7), M1, 16, 0
    DrawTriangle vScr(), 0, 1, 3
    DrawTriangle vScr(), 0, 3, 2
  End If
End Sub
#797
17:37, 18 июля 2016

Mikle
> Конечно, тут даже не поиск, а вычисление.
Хороший способ.

> Причём координаты не 0..1, а 0..16, чтобы при выборке не домножать на ширину
> текстуры в пикселях.
Я тоже использовал данный приём.

> Видимость сторон куба определяется заранее исходя из координат камеры и куба,
> рассчитываются вертексы только видимых сторон, у них CCW по определению
> положительный.
Попробую у себя сделать так же, посмотрю, насколько поднимет fps. Изначально не хотел на это завязываться так как тогда куб нельзя будет вращать. Я рендер писал скорее для себя, чем для победы в конкурсе. Поэтому выбирал более универсальные методы рендеринга и методы дающие наилучшее качество картинки. Может на нём потом игру сделаю, а может и нет:)

#798
17:39, 18 июля 2016

122
> Та же история!
Будет ли 3D игра от sb3d ?:)

#799
1:01, 19 июля 2016

Vitorio
> Будет ли 3D игра от sb3d ?:)
Это сложный и долгий вопрос. Наверное, тут ему не совсем место.

+ Показать
#800
15:18, 20 июля 2016

Вспоминаются мысли о софтовом shadow mapping и/или deferred shading.

Раз есть готовый растеризатор - можно будет поиграться.

#801
20:35, 21 июля 2016

Сделал версию без генерации спанов в памяти, это SSE2 без хака
[file=118862]
Многопоточность не работает, полигоны вблизи пропадают, ТАК НАДО

#802
20:58, 21 июля 2016

Hardcode
> Сделал версию без генерации спанов в памяти, это SSE2 без хака
104 фпс

#803
21:06, 21 июля 2016

TarasB
Хз как ее больше ускорить алгоритмически, не завязываясь на сцену (квады вместо треугольников и т.д.)
Может в выходные PGO сделаю, если влом не будет.
У меня 125 фпс (твоя последняя конкурсная 127)

А напомни, сколько твоя самая лучшая у тебя фпс дает.

#804
21:33, 21 июля 2016

Hardcode
> А напомни, сколько твоя самая лучшая у тебя фпс дает.

Вий 136, моя 8-битка 130. Хотя я тоже ПВС могу приделать методом Монте-Карло без гарантий. Чем дольше будет строиться ПВС, тем больше гарантий, лол.

#805
0:56, 22 июля 2016

Hardcode
> Сделал версию без генерации спанов в памяти, это SSE2 без хака
> Release
Отстает от моего.
Около 153 у Тараса из #706 поста.
Около 141 у меня.
Около 139 у тебя.

Да, и раз уж такая пьянка пошла. А давайте без simd? Мои всегда и были без симд, чтобы на мамонтах работать. Так что, ну, просто чтобы уж сравнить. И потом, Квейки и Анриалы тоже без simd были. А на sse2, ну дык ясен пень быстрее.

#806
1:48, 22 июля 2016

llvm'у крышу сносит, когда sse совсем выключаешь и он генерит совсем уж невменяемые портянки

+ Показать

Еще и в cw постоянно долбится зачем-то.
фпс в 3 раза при этом падает по сравнению с sse1 (при этом разница между sse1 и avx2 где-то 10-15%)

#807
2:41, 22 июля 2016

Hardcode
Жаль. Наверное, косяк реализации llvm. Так-то вики говорит, что для тебя есть целых 4 компилятора, в том числе и на gcc.

#808
3:50, 22 июля 2016

Версия без SSE:
swc2

Деление (double-extended) на пиксель.

#809
9:25, 22 июля 2016

122
> косяк реализации llvm.
Я думаю, они просто забили на поддержку fpu (sse1 - 99 год, даже у Тараса селерон умел его)

122
> в том числе и на gcc.
Он не работает под виндой

Страницы: 151 52 53 54 55 56 Следующая »
ПроектыФорумКонкурсы

Тема в архиве.

Тема закрыта.