forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   Russian Sound System (http://forum.boolean.name/showthread.php?t=15687)

Samodelkin 23.03.2014 17:52

Ответ: Russian Sound System
 
А можно например разделить на два модуля: рейкастинг и ревербератор?
Например сначала рейкастинг считает всё что связано с помещением, затем если есть аппаратная поддержка EAX, EFX то пользуемся ей, если нет то используем программный аналог?
Кстати есть же программные эмуляторы eax и нужно посмотреть чем самодельный аналог будет лучше.

mr.DIMAS 23.03.2014 23:15

Ответ: Russian Sound System
 
Цитата:

А можно например разделить на два модуля: рейкастинг и ревербератор?
Можно сделать раздельно - у меня так и сделано уже.
Цитата:

затем если есть аппаратная поддержка EAX, EFX то пользуемся ей, если нет то используем программный аналог?
Чтобы юзать аппаратный ЕАХ нужно много всякой фигни в движок пихать.
Цитата:

Кстати есть же программные эмуляторы eax и нужно посмотреть чем самодельный аналог будет лучше.
Ничто не мешает( ну кроме лицензии ) выдернуть alcReverb.c и приспособить для своих нужд. Только после прочтения книги по звуку хочется написать свой велосипед.

mr.DIMAS 24.04.2014 19:24

Ответ: Russian Sound System
 
Вложений: 1
Цитата:

Ничто не мешает( ну кроме лицензии ) выдернуть alcReverb.c и приспособить для своих нужд.
Мешает лютый говнокод там.

А так наконец-то сделал годный ревербератор с настройками и преферансом.

Демка на файлообменнике, а исходники для особо страждущих в аттаче.

Насчет реверберации методом рейкастинга тут написано что это дохлый номер - слишком много вычислений.

Цитата:

Most room surfaces are not perfectly flat, resulting in diffuse scattering. Thus, attempts to exactly reproduce the response of a given room via techniques such as ray tracing are generally unsuccessful.
Демка

Samodelkin 25.04.2014 00:54

Ответ: Russian Sound System
 
Когда попытался перенести спейсом звук в центр большого зала - звук пропал весь.

mr.DIMAS 25.04.2014 13:50

Ответ: Russian Sound System
 
Странно у меня ни разу такого не было. А с производительностью как? В демке 6 источников звука, у каждого по своему ревербератору. На моем процессоре( 4 ядра по 2.8 ГГц ) рывков в звуке не слышно.

Далее нужно для ревербератора сделать стерео выход - без него не особо хороший результат. + Добавить декореллятор между каждым фазовым фильтром - он будет обеспечивать вибрато.

Samodelkin 25.04.2014 16:01

Ответ: Russian Sound System
 
У меня примерно такой же проц, c бустом 3 ггц, рывков не слышно.
У старого движка были проблемы когда источник звука быстро менял свое положение, например при быстром повороте камеры/головы - там был слышен резкий переход, похожий на лаг.
Вот в новом вроде такого нет.

Я еще коды буду смотреть.
У тебя в старых были ошибки. Я их через dr.memory и checkcpp прогнал - там были проблемы с неинициализированными переменными и с утечками памяти. Но если ты в msvs делаешь там наверное свои средства есть. Я сейчас как раз 2013 осматриваю - особенно графическая отладка радует, пошаговая отладка шейдеров, где можно историю каждого пикселя посмотреть и реверсировать все его действия, реально мощная штука.
Жалко что неработает с d3d9 - нужно переносить на api dx11, но например включить feature level 9.1 если железо не совместимо.

impersonalis 28.04.2014 14:36

Ответ: Russian Sound System
 
Извините, что вмешиваюсь, но где почитать про dr.memory ?

Samodelkin 28.04.2014 16:33

Ответ: Russian Sound System
 
Цитата:

Сообщение от impersonalis (Сообщение 279588)
Извините, что вмешиваюсь, но где почитать про dr.memory ?


Wiki на googlecode
Инсталятор - а когда поставишь там и доки тоже установятся.
Еще есть пара статей на хабре, где в том числе сравнивают с валгриндом.

В целом неплохая альтернатива валгринду под виндоус.
Хотя вроде есть какие то проекты по переносу валгринда на виндоус, но очень сомнительные.

mr.DIMAS 17.11.2014 18:39

Ответ: Russian Sound System
 
Решил потренироваться с SSE, пока отдыхаю от разработки игры. В общем перевел почти все критичные по скорости места на SSE1 - пока только SSE1 освоил, и нужды в инструкция с других версий не возникало.
В общем по ссылке демка, потестируйте. Напишите здесь результаты, сколько микросекунд занимает "рендер" в разных режимах. И конфиг компа. Особенно интересуют всякие говнопроцессоры типа Intel Atom и прочих.
Например у меня при CPU 4 @ 2.8 ГГц и включенном одном звуке( музыка ) рендер занимает:
SSE, Effects on = 485 mcs.
SSE, Effects off = 54 mcs(!)
Scalar, Effects on = 1602 mcs
Scalar, Effects off = 1089 mcs

Как видно, использование SSE дает минимум троекратный выигрыш в скорости.

СКАЧАТЬ

MiXaeL 17.11.2014 20:47

Ответ: Russian Sound System
 
Пропорции абсолютно такие же, только быстрее в 2-3 раза.
i5-4570 @ 3.20

Mr_F_ 17.11.2014 21:03

Ответ: Russian Sound System
 
Покажешь примеры кода до и после SSE?
Я, в основном, с SSE2 интринсиками работал - векторную математику ускорял. Интересно, как у тебя применение SSE1 выглядит.

mr.DIMAS 17.11.2014 22:01

Ответ: Russian Sound System
 
Вложений: 1
Я из <xmmintrin.h> интринсики брал. В <еmmintrin.h> интринсики для SSE2 насколько я знаю. Код в аттаче - С++11.
Там есть разные варианты функций\методов с приставкой SSE - это с SSE(sic!). Основное это RenderContext.cpp
Не ручаюсь за 100% правильное использование SSE инструкций, но тесты говорят за себя.

SBJoker 18.11.2014 01:31

Ответ: Russian Sound System
 
"Unable to set graphics mode"

Mr_F_ 18.11.2014 01:47

Ответ: Russian Sound System
 
хм, так я тоже юзал xmm и _m128 тип. что-то я уже запутался, где ссе1, а где 2 )
у меня тоже буст давало хороший.
а в sse4 есть дот продукт за 1 инструкцию, в ссе2 он немного неуклюже делается.

mr.DIMAS 18.11.2014 01:50

Ответ: Russian Sound System
 
Вложений: 1
Цитата:

"Unable to set graphics mode"
странно, блиц как обычно чудит. лечилка в аттаче
Цитата:

хм, так я тоже юзал xmm и _m128 тип. что-то я уже запутался, где ссе1, а где 2 )
у меня тоже буст давало хороший.
а в sse4 есть дот продукт за 1 инструкцию, в ссе2 он немного неуклюже делается.
в MSDN написано что __m128d это SSE2. __m128 это SSE1


Часовой пояс GMT +4, время: 03:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot