Да, тени будут шейдерные типа shadow mapping, будет круто и без тормозов, как-раз этим занимаюсь. Кстати GODDOG ты знаком с шейдерами(помощь не помешает), остальное это детский лепет.
Quote
Текст мигает
Знаю, это пока всё черновой вариант.
Вышел новый PureBasic Windows 4.60 beta, всё есть как обещали, но теперь некоторые функции которые раньше без проблем работали не работают вообще и стало очень много тормозов на ровном месте. Ждём релиза. MiniDemo3D - Blitz3D
Сообщение отредактировал MishanayCool - Четверг, 24.11.2011, 02:12
Интересные наработки, а движок бесплатный будет? Там просто, пароль какой-то, это зачем) а? =)) и когда ждать релиза?
Добавлено (13.12.2011, 01:07) --------------------------------------------- Я вообще не большой спец шейдеров, ну вот почитал о них, синтекс не сложный вроде, нашел прогу, там много примеров ATI Render Monkey у Nvidia тоже своя есть=)
Вот что сделал, полноэкранный бумпмап рендеринг=) освещение статическое, правда не совсем я сделал, это было в примерах ATI Render Monkey я только добавил статическое освещение и разрешение текстуры запилил, может пригодится не знаю =)
float TextureSize: register(c1); float4 vecValues[2]; float4 lightness: register(c0); sampler BaseMap: register(s0); // The Sobel filter extracts the first order derivates of the image, // that is, the slope. The slope in X and Y directon allows us to // given a heightmap evaluate the normal for each pixel. This is // the same this as ATI's NormalMapGenerator application does, // except this is in hardware. // // These are the filter kernels: // // SobelX SobelY // 1 0 -1 1 2 1 // 2 0 -2 0 0 0 // 1 0 -1 -1 -2 -1
а движок бесплатный будет? Там просто, пароль какой-то, это зачем) а?
Я ждал этого вопроса. Движок будет бесплатный. Сначала я думал давать ключ за некую сумму(сколько не жалко), но не ради наживы, а исключительно чтобы ускорить процесс написания движка. Я сижу на многих форумах и к сожалению некоторые умные головы ни как не хотят помогать бесплатно, а вот небольшая сумма подогревает их интерес и ускоряет процесс написания движка. Пароль уберу ближе к завершению.
Quote
и когда ждать релиза?
Пока сказать не могу.
Quote
Вот что сделал, полноэкранный бампмап рендеринг=) освещение статическое, правда не совсем я сделал, это было в примерах ATI Render Monkey я только добавил статическое освещение и разрешение текстуры запилил, может пригодится не знаю =)
Посмотрим, код шейдера на глаз вроде простой, без излишек, а то после сохранения кода на обезьяне длина кода меня пугает(много лишнего). В общем как я уже говорил помощь мне не помешает. MiniDemo3D - Blitz3D
Ты что деньги Каму-то за это платишь!? =)) Давай расставим всё на свои места, библиотека, которую ты используешь “N3xtD.dll” тебе не принадлежит так? То есть в случае коммерческого использования, могут возникнуть некие коллизии с разработчиками, ещё момент, перехватывать функции одной длл, дабы другая работала на благо движка, идея не очень хорошая =)) тут с лицензией наверное проблемы возникнут, не лучше ли перехватывать функции из основной “N3xtD.dll” длл хоть и это не фонтан идея но всё же ускорит работу, также можно связаться с реальными разработчиками, дабы они помогли в некоторых вопросах портирования на Blitz3D, но лучшей вариант начать писать с нуля, свою собственную длл, в противном случае будет проще изучить близкий по математики я зык BlitzMax и писать на нём=))
не лучше ли перехватывать функции из основной “N3xtD.dll”
Я так и хотел, но портирование N3xtD.dll в чистом виде невозможно. В PureBasic и в других современных языках есть функции возвращающие несколько значений. На Blitz это невозможно. Если кому-то нужно я могу за пару часов перекинуть весь движок в оригинале оставив все функции как есть без изменений(я написал пару прог для автоматической конвертации любой dll на blitz3D и BlitzPlus), тогда меня поймут(30% процентов функций движка, Blitz просто будет игнорировать). Компилятор Blitz'a морально устарел. Теперь я понимаю какую гигантскую работу проделали создатели Xor3D. Как они обошли все заморочки компилятора? Для меня загадка.
Quote
но лучший вариант начать писать с нуля, свою собственную длл
Кто спорит, конечно лучше, а как же халява. Сначала ищем простые пути, обасрём... и только потом включаем мозги У нас менталитет другой. MiniDemo3D - Blitz3D
Сообщение отредактировал MishanayCool - Вторник, 13.12.2011, 21:02
В современных языках, есть функции, возвращающие несколько значений. На Blitz это невозможно.
Такие функции, у меня в голове не укладываются, я не могу, это осознать я завис… [=)) Как это функция возвращает несколько значений? Ну… это Парсер наверное да, а разбить их нельзя? На три разных функции, например, и передавать результат отдельно? Или передавать Blitzу одной старкой а в Blitzе Парсером читать. Или эта функция передаёт результат в зависимости от метода чтения int, bit, flat и т.д.?
Сейчас укладу, возьмём пример из оригинала движка на PureBasic. К примеру нам надо считать позиции камеры
Code
Dim pos.f(2) ;тут объявляем массив от 0 до 2 _NodePosition(camera, @pos(0)) ;эта функция заполняет массив данными о каждой позиции камеры XYZ, где pos(0) - это X# позиция, pos(1) - это Y#, pos(2) - это Z#
То есть функция _NodePosition вернула 3 значения.
И это не самое сложное!
К примеру взять функцию шейдера:
Code
ProcedureC CallbackShader(*services.NMaterialServices, userData.l) Protected Dim mvp.f(17) Protected Dim invWorld.f(17) Protected Dim worldViewProj.f(17) Protected Dim pos.f(3) Protected Dim pos_.f(3) Protected Dim col.f(3) Protected Dim world.f(17)
---Тут я вырезал 9 строк кода, так как он превышает допустимый лимит текста---
Тут функция @CallbackShader() передаёт функции шейдера CreateShaderHighLevel сразу 77 значений, таких как позицию камеры, света, каждое значение RGBA дифузного цвета, данные для матрицы отсечения(чтобы шейдер не обрабатывал лишнего, только то что попадает в поле зрения) и так далее.
Quote
Ну… это Парсер наверное да, а разбить их нельзя? На три разных функции, например, и передавать результат отдельно?
Вот этим Blitz3D_x9.dll и занимается, разжёвывает N3xtD.dll так чтобы Блитз его понимал.
Это из твоего сообщения 54
Quote
перехватывать функции одной длл, дабы другая работала на благо движка, идея не очень хорошая
Мне даже как-то не привычно видеть такое заполнение массива _NodePosition(camera, @pos(0)) и такой способ возвращения, ну обычно это проще выглядит типа: pos(0))=_NodePosition(camera, ну тут типа флаг)=)) Я так понял из этого получается entityx, entityy, entityz. Ну ты эта… не ленись давай =)) это сложноооо, не могууу, передать, 77, значений, одновременно, одной функцией =)) это всё лень твоя =))