Вики по DirectX 11
| |
Alcatraz | Дата: Вторник, 02 Октября 2012, 13:34 | Сообщение # 21 |
Unity3D Game Developer
Сейчас нет на сайте
| Спасибо за уроки, продолжай писать,а хорошо бы ещё и видео курс! Можно даже платный, я или ещё люди, заинтересованные, купили бы.
Flight Dream Studio. Unity Game Designer.
Сообщение отредактировал Alcatraz - Вторник, 02 Октября 2012, 13:39 |
|
| |
warzes | Дата: Суббота, 27 Апреля 2013, 10:01 | Сообщение # 22 |
участник
Сейчас нет на сайте
| Видеоуроки это вряд ли. Ведь здесь надо код набивать, а с видео его не скопируешь
новый урок текст Кроме того в данном уроке выложен код примера и нужная версия фреймворка, в ближайшее время обновлю все статьи выложив и в них код примеров.
Добавлено (14.10.2012, 05:44) --------------------------------------------- По ходу видеокурс может появиться
Переделан урок простого света (добавлена теория) Новые уроки:
Обновление фреймворка - ru.directx.wikia.com/wiki/DirectX_11_шаг_за_шагом:_Обновление_фреймворка точечный источник света - ru.directx.wikia.com/wiki/DirectX_11_шаг_за_шагом:Точечное_освещение Добавлено (21.10.2012, 15:53) --------------------------------------------- Как обещал ранее, начал выкладывать код для скачивания. На данный момент, обновлены первые уроки вплоть до урока "первый треугольник". В коде (и соответственно в статьях) были исправлены несколько ошибок и неточностей.
Кроме того в уроке по созданию фреймворка написал - как правильно нужно создать статическую библиотеку.
Также сейчас где-то 15 уникальных уроков, что уже больше всех остальных русских ресурсов по DX11 (да и DX9) :).
Составлен план на ближайшие 43 урока (!!! и ведь это только основы) ru.directx.wikia.com/wiki/DirectX_11_шаг_за_шагом
Пока последний b.6 Точечное освещение. дальше там только черновики - не законченно, не оформлено, не начато.
Как видите, работа кипит и мы не останавливаемся.
Всегда готов выслушать пожелания, критику и прочее, можно в этой теме Добавлено (16.01.2013, 04:54) --------------------------------------------- Забыл апнуть тему. Во все уроки были добавлены исходные коды. Последняя полная статья - про мультитекстурирование. b8 - не дописана. На данный момент написано 15 полных статей-уроков Добавлено (16.01.2013, 11:24) --------------------------------------------- Еще две новые статьи - лайтмаппинг и альфамаппинг. На очереди бампмаппинг Добавлено (03.03.2013, 10:57) --------------------------------------------- Еще три статьи b16, b17, b18 (b14, b15 (бамп маппинг и спекуляр маппинг) пока пропущу) Добавлено (27.04.2013, 10:01) --------------------------------------------- После долгого перерыва написал еще 4 урока: billboard, Instancing, тесселяция и несколько источников света.
Также уже готов код двух следующих уроков (и еще 3 в процессе написания), так что думаю в течение одной или двух недель напишу статьи.
Уже 25 уроков:)
Мой блог Вики DirectX
Сообщение отредактировал warzes - Воскресенье, 14 Октября 2012, 05:45 |
|
| |
Archido | Дата: Суббота, 27 Апреля 2013, 12:56 | Сообщение # 23 |
Сэнсэй
Сейчас нет на сайте
| По билбордам. Ты вычисляешь арктангенс чтобы получить угол, а потом этот же угол скармливаешь синусу и косинусу Это Epic. В добавок, насколько я помню, ты большой любитель шейдеров... которые в данном случае выполняют лишь обычные FFP преобразования (умножение вершины на матрицу трансформации и выборку из текстуры), а можно более эффективно и быстро вычислить ориентацию билборда в вертексном шейдере, безо всякой тригонометрии. Что, на самом деле, было бы полезней.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Суббота, 27 Апреля 2013, 12:57 |
|
| |
warzes | Дата: Воскресенье, 28 Апреля 2013, 05:58 | Сообщение # 24 |
участник
Сейчас нет на сайте
| Цитата (Archido) Ты вычисляешь арктангенс чтобы получить угол, а потом этот же угол скармливаешь синусу и косинусу Это Epic можно пример как надо? (без прямого доступа к элементам матрицы - ибо низя) Я не силен в тригонометрии
Цитата (Archido) ), а можно более эффективно и быстро вычислить ориентацию билборда в вертексном шейдере, безо всякой тригонометрии. Что, на самом деле, было бы полезней Это которое написано здесь - http://www.gamedev.ru/terms/Billboard ? Так ли уж оно быстрей? Я вычисляю арктангенсом один раз для всего билбоарда, плюс в шейдере 4 умножения матриц (4 вершины * MVP). А в этом примере добавляются еще 8 умножений). С другой стороны если арктангенс такой медленный...
Мой блог Вики DirectX
|
|
| |
Archido | Дата: Воскресенье, 28 Апреля 2013, 09:36 | Сообщение # 25 |
Сэнсэй
Сейчас нет на сайте
| Цитата (warzes) Это которое написано здесь - http://www.gamedev.ru/terms/Billboard Да, кстати, один из вариантов.
Цитата (warzes) Так ли уж оно быстрей? Я вычисляю арктангенсом один раз для всего билбоарда, плюс в шейдере 4 умножения матриц (4 вершины * MVP). А в этом примере добавляются еще 8 умножений). С другой стороны если арктангенс такой медленный... Да. Арктангенс относительно медленный... и вся тригонометрия в целом, часто можно обойтись без нее и не делать двойную работу. Вот ты сначала считаешь арктангенс, получаешь угол, а потом его скармливаешь синусу и косинусу, потом еще умножаешь rotation на translation (хотя достаточно просто Translate прибавить, но у тебя оно на SSE живет, как я понимаю). А при шейдерной реализации достаточно лишь передать в шейдер позицию(или массив, если билбордов много) и View матрицу, там он вытянет необходимые векторы и сделает простейшие вычисления. Для GPU пара умножений на вершину - это как капля в море
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
warzes | Дата: Суббота, 20 Июля 2013, 14:00 | Сообщение # 26 |
участник
Сейчас нет на сайте
| Следующий урок (shadow map) http://ru.directx.wikia.com/wiki/DirectX_11_шаг_за_шагом:Shadow_Mapping
Мой блог Вики DirectX
|
|
| |
wcpt | Дата: Суббота, 20 Июля 2013, 19:17 | Сообщение # 27 |
постоянный участник
Сейчас нет на сайте
| хочу тоже сказать, что я совсем не поддерживаю мысль, что огл проще. Банально из-за того, что в нем нет ооп. Без ооп легко запутаться(лично мне!)... а ооп в дх не сложный, да и в нем всего то штук 20 интерфейсов, пара сотен контекстно зависимых констант. все завязано на девайсе и его контексте - тут НЕГДЕ потеряться. Да, могут быть сложности с различными DESC, но ведь это все-таки не конструктор игр... да и в огл свои причуды есть. Да, указатели можно уронить, но ведь не нужно быть гуру, чтобы их "контроллировать".
|
|
| |
warzes | Дата: Воскресенье, 21 Июля 2013, 06:14 | Сообщение # 28 |
участник
Сейчас нет на сайте
| Цитата (wcpt) Да, указатели можно уронить, но ведь не нужно быть гуру, чтобы их "контроллировать". про указатели вообще можно было не говорить, ибо в OGL идентификаторы - и так легко просунуть не тот идентификатор, и потом долго искать - почему не работает, так как компилятор и дебагер тут никак не помогут:)
Мой блог Вики DirectX
|
|
| |
Archido | Дата: Воскресенье, 21 Июля 2013, 06:55 | Сообщение # 29 |
Сэнсэй
Сейчас нет на сайте
| Цитата (wcpt) Да, указатели можно уронить, но ведь не нужно быть гуру, чтобы их "контроллировать" Это заблуждение. Порча памяти - это самая большая и самая популярная проблема при написании программ на С++, и чем больше эта программа - тем сложнее все там "контроллировать". Это я не только о DX, а вообще.
Цитата (warzes) про указатели вообще можно было не говорить, ибо в OGL идентификаторы - и так легко просунуть не тот идентификатор, и потом долго искать - почему не работает, так как компилятор и дебагер тут никак не помогут:) ну-ну, давай еще чего-нить расскажи.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
wcpt | Дата: Воскресенье, 21 Июля 2013, 11:44 | Сообщение # 30 |
постоянный участник
Сейчас нет на сайте
| Цитата (Archido) Это заблуждение. Порча памяти - это самая большая и самая популярная проблема при написании программ на С++, и чем больше эта программа - тем сложнее все там "контроллировать". Это я не только о DX, а вообще. Но мы то речь ведем не о "вообще" а конкретно о дх. Если уж так рассуждать (говоря вообще), то память можно запороть и на огл... есесно разработка игр и всякого медиа при помощи профессиональных средств на цпп как никак требует опыта... не следует же зачинать все сразу с геймдева... это я к тому, что в идеале тот, кто решил освоить всякие дх и огл, все-таки должен уметь "работать" с памятью, т.е. все нулевые-ненулевые-всякие прочие указатели должен держать в уме... а это значит, что потенциально проблемой для новичков в дх это не должно быть... надеюсь, верно изъяснился
Сообщение отредактировал wcpt - Воскресенье, 21 Июля 2013, 11:51 |
|
| |
warzes | Дата: Вторник, 23 Июля 2013, 09:29 | Сообщение # 31 |
участник
Сейчас нет на сайте
| Цитата (Archido) ну-ну, давай еще чего-нить расскажи. Я тебе покажу лучше. Вот я взял урок http://www.gamedev.ru/community/ogl/articles/lesson03 "Нечаяно" изменил одну сточку в файле main.cpp glBindTexture(GL_TEXTURE_2D, colorTexture); заменил на glBindTexture(GL_TEXTURE_2D, cubeVAO); Ведь все идентификаторы имеют тип GLuint. Может конечно прямо так никто не напишет, но когда кода станет много, кто-то неявно такое может случайно сделать... или например изменить сам идентификатор и получил пустой экран. И вот теперь, как я это должен дебажить? Компилятор скомпилировал, потому что для него все правильно. OpenGl вместо того чтобы отписаться что не тот тип - запустился, потому что это спецификация и ее не волнует мои проблемы (при том что DirectX сообщит об ошибке). Дебагер мне здесь тоже не поможет, потому что я не знаю в каком виде идентификаторы внутри OpenGL и как по значению их распознавать. Остается часами каждую строчку проверять, думать - не в матрицах ли проблемы, не забыл ли какой рендер стейт изменить, а загрузилось ли вообще что-то и т.д.
Теперь докажи что я неправ и эта ошибка мне приснилась. Вообще, мне кажется ты из тех людей кто себя считает шибко умным, а всех остальных дураками. Я то может и фейлюсь так как чего-то не знаю, но при этом если за кем-то замечаю ошибки, не бегаю потом по всему форуму и во всех его темах не пишу что он дурак. А ты себя именно так и ведешь.
Мой блог Вики DirectX
|
|
| |
Archido | Дата: Вторник, 23 Июля 2013, 12:05 | Сообщение # 32 |
Сэнсэй
Сейчас нет на сайте
| Цитата (warzes) Теперь докажи что я неправ и эта ошибка мне приснилась Зачем мне тебе что-то доказывать? Уже давно известно, что это совершенно бесполезно. В твоем примере вместо текстур будет либо мусор, либо просто левые текстуры и совершенно очевидно кто виновник этой ситуации. Сколько лет я не писал на OpenGL, но вот такое "так легко просунуть не тот идентификатор, и потом долго искать" у меня ни разу воспроизвести не получилось. Что же я делаю не так?
Цитата (warzes) Я то может и фейлюсь так как чего-то не знаю, но при этом если за кем-то замечаю ошибки, не бегаю потом по всему форуму и во всех его темах не пишу что он дурак. А ты себя именно так и ведешь. Ну тем по программированию тут всплывает не так то и много, в бОльшей части из них я отписываюсь, ну и ты в некоторых иногда попадаешься А что касается дураков и умных, то у меня к тебе давно уже отношение особенное - ты любишь что-либо выставить "как данное", при этом легко можешь сам в этом не разбираться или даже ошибаться. Если в чем-то не уверен или даже вообще с чем-либо дел не имел, то зачем писать об этом c "умным" видом? А если о субъективных вещах разговор, то и пиши, что "имхо", а не выдывай все за вселенскую правду. Я тоже много чего не знаю, и я не буду писать в теме о том, в чем не разбираюсь. Начало всей истории лежит тут и там же, и там сразу видно "кто себя считает шибко умным, а всех остальных дураками"
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Вторник, 23 Июля 2013, 12:08 |
|
| |
warzes | Дата: Вторник, 23 Июля 2013, 15:27 | Сообщение # 33 |
участник
Сейчас нет на сайте
| Цитата (Archido) В твоем примере вместо текстур будет либо мусор, либо просто левые текстуры и совершенно очевидно кто виновник этой ситуации. Ясен пень будет мусор. Вопрос был - как об этом узнать когда у тебя кода под полмиллиона (у меня например мой движок уже из 400+ тысяч кода). А если это сделал кто-то другой? А если это произошло из-за дыры в архитектуре, когда какой-то код неявно что-то меняет (это очень вероятно например, если написан кривой менеджер памяти)?
Цитата (Archido) Сколько лет я не писал на OpenGL, но вот такое "так легко просунуть не тот идентификатор, и потом долго искать" у меня ни разу воспроизвести не получилось. А вот у меня ни разу не было проблем с голыми указателями, означает ли это что те кто юзают умные указатели - просто нубы? Нет. Так и тут, то что у тебя может и не было проблем, не означает что у других их нет.
Цитата (Archido) Начало всей истории лежит тут и там же, и там сразу видно "кто себя считает шибко умным, а всех остальных дураками" Ну да, пост годовой давности. Ты бы еще чего древнее откопал.
Мой блог Вики DirectX
|
|
| |
Archido | Дата: Вторник, 23 Июля 2013, 16:45 | Сообщение # 34 |
Сэнсэй
Сейчас нет на сайте
| Цитата (warzes) Вопрос был - как об этом узнать когда у тебя кода под полмиллиона (у меня например мой движок уже из 400+ тысяч кода). А если это сделал кто-то другой? А если это произошло из-за дыры в архитектуре, когда какой-то код неявно что-то меняет (это очень вероятно например, если написан кривой менеджер памяти)? Ну и причем тут тогда вообще OpenGL? Или может кто-то где-то говорил, что волшебные идентификаторы - лекарство от всех болезней? Это все уже за рамками GAPI. Ты точно также подсунешь невалидный указатель из-за своей "кривой орхитектуры" и будешь стучаться головой об стол, при этом если это единичный случай, то все DX'вое добро очень бодро упадет, а под OGL - пропадет лишь нормальная текстура у модели, всего то.
Цитата (warzes) у меня например мой движок уже из 400+ тысяч кода Молочик, в одного Кармака и его IdTech 4 почти порвал, поздравляю.
Цитата (warzes) Ну да, пост годовой давности. Ты бы еще чего древнее откопал. А что это меняет? Как будто что-то изменилось
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
warzes | Дата: Вторник, 23 Июля 2013, 18:43 | Сообщение # 35 |
участник
Сейчас нет на сайте
| Цитата (Archido) Ты точно также подсунешь невалидный указатель из-за своей "кривой орхитектуры" и будешь стучаться головой об стол, при этом если это единичный случай, то все DX'вое добро очень бодро упадет, а под OGL - пропадет лишь нормальная текстура у модели, всего то. невалидный указатель можно поймать - перегрузив операторы new, повесив событие на new, словив исключение, используя сторонние утилиты, пройдясь дебагером, запустив DirectX в дебаге, когда он прямо и скажет что в такой-то строчке такая-то переменная невалидна... И еще тыщей вариантов. Как ты прикажешь ловить невалидный идентификатор? Особенно когда видеокарта не держит debug_output.
Цитата (Archido) А что это меняет? Как будто что-то изменилось ясен пень, я прокачался:)
Мой блог Вики DirectX
|
|
| |
Archido | Дата: Среда, 24 Июля 2013, 13:11 | Сообщение # 36 |
Сэнсэй
Сейчас нет на сайте
| Цитата (warzes) невалидный указатель можно поймать - перегрузив операторы new, повесив событие на new Лол. Теперь расскажи, что мне даст перегрузка оператора new (и еще вопрос - где?) когда я делаю Device->CreateBuffer(..) и получаю указатель на интерфейс.
Цитата (warzes) И еще тыщей вариантов. Долго считал?
Цитата (warzes) Как ты прикажешь ловить невалидный идентификатор? Особенно когда видеокарта не держит debug_output. Если включить моск, то отловить можно все, что угодно: Код struct EngineID { //Если припечет, можно засунуть весь EngineID в 4-ре байта (GLuint) GLuint Id; GLuint Type;
EngineID(GLuint EngId) { Id = EngId; }
void operator= (GLuint EngId) { Id = EngId; } operator GLuint() { return Id; } };
const int ENGINE_TYPE_TEXTURE = 1; const int ENGINE_TYPE_BUFFER = 2;
typedef EngineID TextureID; typedef EngineID BufferID;
Array <TextureID> TexList; Array <BufferID> BufList;
void engGenTextures(GLsizei n, TextureID *textures) { GLuint* Array = new GLuint[n]; glGenTextures(n, Array);
for (int i = 0; i < n; i++) { textures[i].Id = Array[i]; textures[i].Type = ENGINE_TYPE_TEXTURE;
TexList.Append(Array[i]); } delete Array; }
void engBindTexture(GLenum Target, TextureID Texture) { assert(Texture.Type == ENGINE_TYPE_TEXTURE); assert(TexList.CheckExistence(Texture));
glBindTexture(Target, Texture); } Еще вопросы?
Цитата (warzes) ясен пень, я прокачался:) Ну, скилл "я самый умный, а все остальные дураки" ты прокачал - факт, с этим я с тобой вполне согласен.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
warzes | Дата: Воскресенье, 20 Октября 2013, 09:30 | Сообщение # 37 |
участник
Сейчас нет на сайте
| После долгого перерыва новый урок Цитата http://ru.directx.wikia.com/wiki/DirectX_11_шаг_за_шагом:Multiple_Light_Shadow_Mapping
Конечно не такой полезный, но я еще попытаюсь несколько написать
Мой блог Вики DirectX
|
|
| |
arlaid | Дата: Воскресенье, 20 Октября 2013, 11:24 | Сообщение # 38 |
частый гость
Сейчас нет на сайте
| Было бы не плохо сделать мини учебник. То есть запаковать в отдельный архивчик и разложит все по полочкам.
|
|
| |
warzes | Дата: Воскресенье, 20 Октября 2013, 12:55 | Сообщение # 39 |
участник
Сейчас нет на сайте
| Еще один урок Цитата http://ru.directx.wikia.com/wiki/DirectX_11_шаг_за_шагом:Projective_Texturing
Цитата arlaid ( ) Было бы не плохо сделать мини учебник. То есть запаковать в отдельный архивчик и разложит все по полочкам. Эм? То есть сборник советов? или все имеющиеся статьи выложить в виде файла?
Мой блог Вики DirectX
|
|
| |
arlaid | Дата: Воскресенье, 20 Октября 2013, 13:51 | Сообщение # 40 |
частый гость
Сейчас нет на сайте
| Цитата warzes ( ) Эм? То есть сборник советов? или все имеющиеся статьи выложить в виде файла?
Все имеющиеся статьи выложить в виде одного файла .exe (с мини навигацией), или же все статьи по порядку положить в папку и запаковать в архив, что бы легче можно было ориентироваться.В итоге выйдет довольно красивый таки учебник
Сообщение отредактировал arlaid - Воскресенье, 20 Октября 2013, 13:51 |
|
| |
|