| 
	
		
		
			| Вики по 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 |  |  |  |  |  
 |