Вторник, 16 Апреля 2024, 09:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Создание игр и всё, что с этим связано » Игровая литература » Вики по DirectX 11
Вики по 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
участник
Сейчас нет на сайте
Видеоуроки это вряд ли. Ведь здесь надо код набивать, а с видео его не скопируешь cool

новый урок
текст
Кроме того в данном уроке выложен код примера и нужная версия фреймворка, в ближайшее время обновлю все статьи выложив и в них код примеров.

Добавлено (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
Сэнсэй
Сейчас нет на сайте
По билбордам. Ты вычисляешь арктангенс чтобы получить угол, а потом этот же угол скармливаешь синусу и косинусу biggrin Это 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 пара умножений на вершину - это как капля в море smile


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)
Я то может и фейлюсь так как чего-то не знаю, но при этом если за кем-то замечаю ошибки, не бегаю потом по всему форуму и во всех его темах не пишу что он дурак. А ты себя именно так и ведешь.

Ну тем по программированию тут всплывает не так то и много, в бОльшей части из них я отписываюсь, ну и ты в некоторых иногда попадаешься biggrin
А что касается дураков и умных, то у меня к тебе давно уже отношение особенное - ты любишь что-либо выставить "как данное", при этом легко можешь сам в этом не разбираться или даже ошибаться. Если в чем-то не уверен или даже вообще с чем-либо дел не имел, то зачем писать об этом 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)
Ну да, пост годовой давности. Ты бы еще чего древнее откопал.

А что это меняет? Как будто что-то изменилось biggrin


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 (с мини навигацией), или же все статьи по порядку положить в папку и запаковать в архив, что бы легче можно было ориентироваться.В итоге выйдет довольно красивый таки учебник smile


Сообщение отредактировал arlaid - Воскресенье, 20 Октября 2013, 13:51
Форум игроделов » Создание игр и всё, что с этим связано » Игровая литература » Вики по DirectX 11
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг