GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (123 стр.)

Сообщения на форуме пользователя Andrey (123 стр.)

Вопрос по GLSL6 дек. 200711:52#4
unsigned
GeForce 2 поддерживает GLSL, сильно урезанный конечно и видать в Software режиме. Ну и у этой карты только есть только vs_1_1/GL_ARB_vertex_program если не ошибаюсь т.е. SM 2.0 нет.
Получение плоскостей пирамиды видимости из проект. матрицы5 дек. 200715:08#1
Похиподиум
  // Функция расчета пирамиды
  INLINE void ExtractFrustum(const float *proj, const float *modl, bool IsNormalize = false)
  {
    float clip[16];
    // Комбинируем матрицы(перемножаем)
    clip[ 0] = modl[ 0] * proj[ 0] + modl[ 1] * proj[ 4] + modl[ 2] * proj[ 8] + modl[ 3] * proj[12];
    clip[ 1] = modl[ 0] * proj[ 1] + modl[ 1] * proj[ 5] + modl[ 2] * proj[ 9] + modl[ 3] * proj[13];
    clip[ 2] = modl[ 0] * proj[ 2] + modl[ 1] * proj[ 6] + modl[ 2] * proj[10] + modl[ 3] * proj[14];
    clip[ 3] = modl[ 0] * proj[ 3] + modl[ 1] * proj[ 7] + modl[ 2] * proj[11] + modl[ 3] * proj[15];

    clip[ 4] = modl[ 4] * proj[ 0] + modl[ 5] * proj[ 4] + modl[ 6] * proj[ 8] + modl[ 7] * proj[12];
    clip[ 5] = modl[ 4] * proj[ 1] + modl[ 5] * proj[ 5] + modl[ 6] * proj[ 9] + modl[ 7] * proj[13];
    clip[ 6] = modl[ 4] * proj[ 2] + modl[ 5] * proj[ 6] + modl[ 6] * proj[10] + modl[ 7] * proj[14];
    clip[ 7] = modl[ 4] * proj[ 3] + modl[ 5] * proj[ 7] + modl[ 6] * proj[11] + modl[ 7] * proj[15];

    clip[ 8] = modl[ 8] * proj[ 0] + modl[ 9] * proj[ 4] + modl[10] * proj[ 8] + modl[11] * proj[12];
    clip[ 9] = modl[ 8] * proj[ 1] + modl[ 9] * proj[ 5] + modl[10] * proj[ 9] + modl[11] * proj[13];
    clip[10] = modl[ 8] * proj[ 2] + modl[ 9] * proj[ 6] + modl[10] * proj[10] + modl[11] * proj[14];
    clip[11] = modl[ 8] * proj[ 3] + modl[ 9] * proj[ 7] + modl[10] * proj[11] + modl[11] * proj[15];

    clip[12] = modl[12] * proj[ 0] + modl[13] * proj[ 4] + modl[14] * proj[ 8] + modl[15] * proj[12];
    clip[13] = modl[12] * proj[ 1] + modl[13] * proj[ 5] + modl[14] * proj[ 9] + modl[15] * proj[13];
    clip[14] = modl[12] * proj[ 2] + modl[13] * proj[ 6] + modl[14] * proj[10] + modl[15] * proj[14];
    clip[15] = modl[12] * proj[ 3] + modl[13] * proj[ 7] + modl[14] * proj[11] + modl[15] * proj[15];

    // извлекаем уравнение правой плоскости
    planes[RIGHTPLANE].ComputePlane(clip[ 3] - clip[ 0], clip[ 7] - clip[ 4],
      clip[11] - clip[ 8], clip[15] - clip[12]);
    // извлекаем уравнение левой плоскости
    planes[LEFTPLANE].ComputePlane(clip[ 3] + clip[ 0],
      clip[ 7] + clip[ 4],
      clip[11] + clip[ 8],
      clip[15] + clip[12]);
    // извлекаем уравнение нижней плоскости
    planes[BOTTOMPLANE].ComputePlane(clip[ 3] + clip[ 1],
      clip[ 7] + clip[ 5],
      clip[11] + clip[ 9],
      clip[15] + clip[13]);
    // извлекаем уравнение верхней плоскости
    planes[TOPPLANE].ComputePlane(clip[ 3] - clip[ 1],
      clip[ 7] - clip[ 5],
      clip[11] - clip[ 9],
      clip[15] - clip[13]);
    // извлекаем уравнение дальней плоскости
    planes[FARPLANE].ComputePlane( clip[ 3] - clip[ 2],
      clip[ 7] - clip[ 6],
      clip[11] - clip[10],
      clip[15] - clip[14]);
    // извлекаем уравнение ближней плоскости
    planes[NEARPLANE].ComputePlane(clip[ 3] + clip[ 2],
      clip[ 7] + clip[ 6],
      clip[11] + clip[10],
      clip[15] + clip[14]);
      if (IsNormalize) {  // если надо нормализовать
            planes[RIGHTPLANE].normal.Normalize();
            planes[LEFTPLANE].normal.Normalize();
            planes[TOPPLANE].normal.Normalize();
            planes[BOTTOMPLANE].normal.Normalize();
            planes[NEARPLANE].normal.Normalize();
            planes[FARPLANE].normal.Normalize();
        }
  }
работает для любого API.
Доделываю водичку. Советы, тесты, размышления. (Бывшее - Моя небольшая лужа)5 дек. 200711:39#23
Asgard
>louken, да, на джифах 5-й серии крайне медленно пашет..
да это вообще карты этой серии медленные так что все ок.
Доделываю водичку. Советы, тесты, размышления. (Бывшее - Моя небольшая лужа)4 дек. 200720:18#16
Asgard
20:16:03    : BlackCat Engine Opened
20:16:03    : BlackCat Engine Initialised
20:17:12    : --------Write FPS Data--------
20:17:12    : Engine Work Time: 65 seconds
20:17:12    : MinFPS: 15
20:17:12    : MaxFPS: 162
20:17:12    : Average FPS: 44
20:17:12    : BlackCat Engine Closed
ATI 9600 дрова 7.11.
Пара вопросов по MFC4 дек. 200711:26#8
slava_mib
>Объять необъятное, совместить несовместимое )))) MFC - древняя, неудобная, громоздкая и кривая вещь. В данный момент есть очень много альтернатив и 90% из них >гораздо удобнее и функциональнее MFC
MFC обновили в новой версии Visual C++ 2008 ;)
http://blogs.msdn.com/somasegar/archive/2007/11/09/visual-c-libra… s-update.aspx
так что не так все плохо с MFC.
>исходя из текущих реалий жизни - он устарел, неудобен и неуклюж.
не испытывал больших неудобств.
Пара вопросов по MFC3 дек. 200719:38#3
gs_4_1
>Если программа простая - WinAPI. Если сложная, то ИМХО стоит посмотреть в сторону других библиотек: Qt, wmWidgets.
может wxWidgets  ? а не wmWidgets.
т.е. к примеру на wxWidgets  писать проще чем на MFC ? дело стоит только за редактором ресурсов в MFC он беспоатный, а в wxWidgets  нет.
Scart
>Стоит ли вообще использовать это творение мелкософта
стоит. Редактор Far Cry/Crysis написан на MFC даже не на .Net. Как бы не хаяли MFC это лучше чем VCL.
Создание GUI. От начала до завершения.2 дек. 200719:24#121
Aroch
А чем std::vector не устраивает? лишний раз заботится о том что не забыл сделать delete [] ?
Osiris
// &stdvVertexes - вдрес класса std::vector но не начала данных.
  memcpy( pVoid, &stdvVertexes[0], m_uVertexBufferSize * sizeof(ORTOCOLORPOINTFACE) );
Cg->GL_ARB_vertex_program, не работает простейший вершинный шейдер2 дек. 20070:17#19
innuendo
GL_MATRIX0_ARB с этим ничего не получилось :( пробовал разные варианты транспонирование, порядок умножения результат одинаков.
>Но, лично я – не сторонник делать сборную солянку. Cg
нету сборной солянки. Cg обеспечивает мне только удобную компиляцию шейдеров независимо от рендере. И нет смысла тянуть за собой Cg RunTime.
keltar
спасибо попробую.
Неудавшийся эксперимент по текстурированию ландшафта. (комментарии)30 ноя. 200719:32#1
Гляну статью твою потом что-нибудь скажу :)
Cg->GL_ARB_vertex_program, не работает простейший вершинный шейдер30 ноя. 200718:29#16
innuendo
>glMatrixMode(GL_MATRIX0_ARB);
>glLoadMatrixf(matrix);
спасибо! это уже лучше, но это не то конечно что я писал но попробыать можно.
никогда не думал что в OpenGL такие проблемы с передачей матриц передача моих перемноженных рукми матриц работает в Direct3D
>Я не понял, в Cg есть же функции передачи матриц в program или нет ? :)
есть конечно, но причем тут Cg ?
но нафиг мне Cg для этого ??? он мне нужен для компиляции и все.
ты пробовал скачивать проект и посмотреть что не так? нужно что-бы было при работе двух шейдеров(1 использует glstate и матрицы перемножать и передавать не нужно, другой требует передачи матриц) одинаковый результат.

Лучше ли билборд на шейдере30 ноя. 200716:23#19
Kavis
>это что условия в шейдере очень дорогая операция ?
ну не заточена архитектура GPU команд для команд сравнения.
>а и еще вопрос как определить для какой версию я шейдер написал, к примеру это наверно шейдер 2.0 ?
версии шейдеров в OpenGL немножко отличается от шейдеров на Direct3D фрагментный шейдер думаю потянет на версию ps_1_4 не более если не ошибаюсь. Хотя если много команд то видать 2.0. Вершинный потянут на vs_1_1
ну и более подробное соответcтвие шейдеров на OpenGL/Direct3.
http://www.gamedev.ru/faq/?id=102
Cg->GL_ARB_vertex_program, не работает простейший вершинный шейдер30 ноя. 200715:24#14
innuendo
All
В связи с внедрением теней в OpenGL рендере нужна передача матриц. Вот решил поднять тему для облегчения я сделал тестовый проект с 2 шейдерами на Cg которые потом компилятся в GL_ARB_vertex_program.
1 использует glstate другой нет. по нажатию на пробел шейдеры подменяются. В этом случае если используется шейдер не использующий glstate, засылается произведение Model * View *Projection в первый регистр. На экране должна быть крутящаяся сфера. Прошу кому не сложно сказать что не так.
http://www.gamedev.ru/download/?id=6385
http://www.gamedev.ru/download/?id=6386 - облегченная версия без библиотек.
Создание GUI. От начала до завершения.28 ноя. 200719:03#109
Osiris
assert(iCharID - iID - 2 < stdvChars.size() && "Out of Range");
 ftTemp = m_stdvChars[iCharID - iID - 2];
Particles. Упрощенный подход, но не работает. (Проблема решена, но появились вопросы про инстансинг)27 ноя. 200714:21#3
Vel I
>Частицы выглядят красиво и работают быстро,
спешу тебя разочаровать glBegin/glEnd  убьет твою производительность в демке где одни частицы да, конечно все быстро... используй VBO :)

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр