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

::3D Software rendering contest [finished]:: (63 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 162 63 64 65 66 Следующая »
#930
15:00, 8 сен. 2011

Up

Что-то скучно стало, решил дальше допилить свой старый софтрендер. Пилил, пилил а ФПС как был УГ так и остался : (

Начал нооооовый  проект xD  Ну так, just for fun.  Теперь стараюсь всё оптимизировать на максимум (насколько умею) : P

Вот, 40 минут кодинга - пока просто окошко с клиентской областью 320*240 и в нём рендерится 1 треугольник.  (также очищаются и юзаются собсно depth, color буферы).  Растеризация идёт блоками 8*8 пикселей.  Зелёные пиксели - те, которые внутри блоков, полностью попавших внутрь треугольника.  Красные пиксели - те, которые обрабатывались по-отдельности (каждый пиксель обсчитываю а не сразу блок)

TBSoftRender | ::3D Software rendering contest [finished]::

SoftRender_v0_1  У меня 2100+ FPS  Когда делаю большой бэк буфер - всё начинает упираться в филлрейт памяти : (


upd:  убрал работу с float-ами в одном месте, у меня буст ещё в 100 ФПС.  SoftRender_v0_1_1

#931
15:50, 8 сен. 2011

Ну, тогда и мой апдейт
Изображение
Считает быстро (относительно) и вроде физически правильно. Вроде есть косяки при изменении количества фотонов.
Демку можно скачать здесь.

#932
16:04, 8 сен. 2011

VirT
Оу!! Круто ) Спасибо за сорцы!

#933
16:21, 8 сен. 2011

.L
> SoftRender_v0_1_1
Не находит рантайм, попробую дома, где установлена студия.

#934
16:24, 8 сен. 2011

Mikle
> Не находит рантайм, попробую дома, где установлена студия.
я в VS2010 собирал : \    С динамической линковкой райнтайма. Так что да, он нужен.

#935
16:30, 8 сен. 2011

Первая демка SoftGL  шейдеры поддерживает? HLSL 4 или какой-то собственный вариант?

Кстати, вот на последних страницах демки с отражениями - это рейтрейс?

#936
16:47, 8 сен. 2011

Lamer007
> на последних страницах демки с отражениями - это рейтрейс?
Мои - рейтрейс.

#937
17:19, 8 сен. 2011

Lamer007
> Кстати, вот на последних страницах демки с отражениями - это рейтрейс?
У меня растеризатор тоже рейтрейс(а их всего-то 2 или 3). Освещение/каустика/irradiance через final gathering.

#938
17:33, 8 сен. 2011

Lamer007
> Первая демка SoftGL шейдеры поддерживает? HLSL 4 или какой-то собственный
> вариант?
SoftGL - оу, это мой первый растеризатор на C#  Там есть шейдеры, на C#  : )  Сделаны внешними файлами.

#939
17:55, 8 сен. 2011

SoftRender_v0_1_2

SR_tri_interp | ::3D Software rendering contest [finished]::

Обновил! Добавил интерполяцию  шейдерных констант :3  Как-то очень жёстко просадило производительность (  С 2200 FPS упало до 1000+  : \  Интерполируется всеголишь 1  float4 регистр.  Не, я б мог конечно оптимизировать интерполяцию 1 регистра с  заранее известным типаом значения : )  Но я ж делаю универсально - чтобы можно было сколько угодно констант интерполировать и юзать как угодно (как в DX)

Блин, надо искать где просядает.

#940
18:26, 8 сен. 2011

1600 фпс весьма неплохо)))

#941
18:31, 8 сен. 2011

.L
> Но я ж делаю универсально -

уже все модификаторы работают ? чтобы было как в DX ? :)

#942
18:36, 8 сен. 2011

Futurist
> 1600 фпс весьма неплохо)))
это на самой последней версии?

Да это кажется ) Увеличу размер бэкбуфера, увеличу сам треугольник и ФПС рухнет  (не тестил, но уверен).

Так, переделал чуток интерполяцию. Сначала у меня  рассчитывалась интерполяция каждой шейдерной константы отдельно!  Ну тоесть для каждой считал свои дельты, градиенты.  Сейчас подумал - нафига?  Можно ж для каждой вершины условно задать по 1 интерполяционному вектору!  у вершины #1 вектор [1, 0, 0], у вершины #2 вектор [0, 1, 0], ну и у #3 вектор [0, 0, 1].  Их интерполирую, в итоге для каждого пикселя, который внутри треугольника получаю  float3 вектор с весами интерполяции для каждой вершины.

потом можно спокойно юзая эти веса интерполировать регистры:

Vector3 weights ....

for(int i = 0; i < regCount; i++)
{
     //можно получать тип и в switch выбирать какой вектор интерполировать 1-4 компоненты
     regResult[i] = vertex1_registers[i] * weights.X + vertex2_registers[i] * weights.Y + vertex3_registers[i] * weights.Z; //итд
}

#943
18:37, 8 сен. 2011

innuendo
> уже все модификаторы работают ? чтобы было как в DX ? :)
какие модификаторы? Поясни

#944
18:41, 8 сен. 2011

Ага на последней версии... Первая 4000 выдает...

Страницы: 162 63 64 65 66 Следующая »
ПрограммированиеФорумГрафика

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