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

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

Crystal Space (3D software development kit)5 июля 200721:17#14
Gans
CS нету смысла с Ogre тягаться, смотрел как-то исходники CS местами вообще непонятно что...Но что-оттуда я использовал.
из открытых движков Ogre лидирует.
Но сообщество ты открывай я вступлю :)
Шейдеры в OpenGL-e5 июля 200721:00#5
VileDog(ck.UA)
используй glew и не надо сотни строк инициализации расширений OpenGL
Черные oбъекты,если GL_ARB_vertex_program используется без GL_ARB_fragment_program.3 июля 200723:45#21
Итак проблема решена!
При отсутсвии пиксельного шейдера нужно установить параметры текстуры окружения.
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
при присутствии:
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
Всем спасибо тема закрыта.
Не отображается тень на ландшафте, но отображается на плоскости.3 июля 20071:52#8
OXOTHIK
XopcT
в общем нормали я посчитал до этого они были нулевые:
Вот получилось что ландшафт освещен но может не совсем правильно:
Изображение удалено
далее упрорстив шейдер приемника теней:
float4 PSmain(float2 tv: TEXCOORD0, float4 shadowCrd: TEXCOORD1,
             float3 depthDiffuseSpecular : TEXCOORD2) : COLOR 
{   
  // Radial distance
  float depth = depthDiffuseSpecular.x;
  // Standard lighting
  float diffuse = depthDiffuseSpecular.y;
  float specular = depthDiffuseSpecular.z;
  // The depth of the fragment closest to the light
  float shadowMap = tex2Dproj(ShadowMap, shadowCrd).r;
  // If the depth is larger than the stored depth, this fragment
  // is not the closest to the light, that is we are in shadow.
  // Otherwise, we're lit. Add a bias to avoid precision issues.
  float shadow = (depth < shadowMap + shadowBias);
  return shadow;
получилось вот что(красным выделены куски теней):
Изображение удалено
Что еще может быть не так?
Черные oбъекты,если GL_ARB_vertex_program используется без GL_ARB_fragment_program.3 июля 20071:27#20
innuendo
>Если отключить шейдеры - нормально работает?
конечно я же писал...
Черные oбъекты,если GL_ARB_vertex_program используется без GL_ARB_fragment_program.2 июля 200721:54#16
innuendo
>Попробуй в своём ренденре без vs. но с простым fs
так работает для теста домножал на число, объект был светлей.
>Кинь на мыло исходники как рендеришь.
да там здоровый проект вместе с Direct3D/OpenAL/Lua и т.д.
Могу запостить кусок код полностью отвечающий за отрисовку и установку шейдера.
попробовал 15 пост знал что работать не будет. ну согласись это бред! :)
daedal
>не просто интересно на какую версию вершинный шейдер компилируется ?
в случае OpenGL нет понятия версии. компилю в профиль arbvp1, это вроде gотянет на vs_1_- vs_2_0 по аналогии с Direct3D,
а вот под Direct3D компилю как vs_1_1 наверное это ты хотел узнать?
All
короче нужно глубже копать может пойти на форум www.opengl.org ?
Не отображается тень на ландшафте, но отображается на плоскости.2 июля 200721:41#7
OXOTHIK
VileDog(ck.UA)
XopcT
Ну вот я оказывается сильно стпурил забыл что нормали не простчитаны оставив их на потом.
Спасибо ща посчитаю...
Черные oбъекты,если GL_ARB_vertex_program используется без GL_ARB_fragment_program.1 июля 200723:05#12
innuendo
struct PS {
    float4 position     : POSITION;         // position in projection space
    float2 uv0          : TEXCOORD0;        // texture coordinate
    float4 xColor  : COLOR; 
};



uniform float4x4 ModelViewProjection : WorldViewProj; //register(c0); // the model*view*projection matrix
PS vsMain(float4 position : POSITION, float2 uv0 : TEXCOORD0, float4 xColor : COLOR)
{

  PS vsOut;
  vsOut.position = mul(position, ModelViewProjection);
  vsOut.uv0 = uv0;
  vsOut.xColor = xColor;
  return vsOut;

}

вот такой шейдер заставил корректно отображаться объект.
Как теперь исправить текстурирование что-бы оно работало без пиксельного шейдера?
Черные oбъекты,если GL_ARB_vertex_program используется без GL_ARB_fragment_program.1 июля 200723:00#11
innuendo
>если появится сцена в цветах значит что-то с текстурированием,
ок теперь все есть.
>DiffSampler == 0?
нет индекс текстуры корректный. Но это то ни причем пиксельного шейдера то нет.
>glEnable( GL_TEXTURE_2D);
угу...
>попробуй включить освещение
не помогло :)
Не отображается тень на ландшафте, но отображается на плоскости.1 июля 200722:04#3
XopcT
А как нормали могут  повлиятьна тень?
Черные oбъекты,если GL_ARB_vertex_program используется без GL_ARB_fragment_program.1 июля 200721:56#9
daedal
>для вершинного ставь версию 2_0 или 2_а.
не забывай что у меня проблема не с Direct3D, а с OpenGL где версии шейдеров совсем не так обозначаются.
>>innuendo
>>1) зачем смешивать ARB_fragment_program и ARB_fragment_shader?
>а где ты такое увидел?
>glUseProgramObjectARB; ? или я обозналася
ну это на всякий случшай если будет еще биндится GLSL
>Если ты пользуешься Gg то и используй cgBindProgram ... и др.
нет смысла использовать CG Run time он всме равно является прослойкой между OpenGL/Direct3D
лучше использовать его как компилятор в какй-либо профиль
>Что касается проблемы - проверь освещение и текстурирование ( какой текущий TMU )
>попробуй вначале без текстур, с одним цветом, так будет проще
>еще может замени float2 uv0 на float4
освещения нет
странная замена...
Черные oбъекты,если GL_ARB_vertex_program используется без GL_ARB_fragment_program.30 июня 200715:29#5
Спец
>Ты в вершинной программе все атрибуты вершины записываешь?
да конечно.
>Просто если, например, ты используешь текстурирование, но забудешь в вершинном шейдере подать координаты текстуры на выход,
>то фиксированный конвеер заглючит.
вот все передается:
vsOut.uv0 = uv0;
>Кста, у тебя цвет в вершинном шейдере не записывается. На GLSL надо было бы написать gl_FrontColor = gl_Color, в HLSL тоже чо-нить такое есть :)
в Direct3D на HLSL все у меня ок когда нет пиксельного шейдера, а причем тут GLSL ?
=A=L=X=
спасибо за совет.
innuendo
>1) зачем смешивать ARB_fragment_program и ARB_fragment_shader?
а где ты такое увидел?
2) зачем STATE.MATRIX.MVP.TRANSPOSE ? через  STATE.MATRIX.MVP не работает?
не работает но дело то не в этом.
3) если используешь Cg, зачем glBindProgram?
а за чем мне Cg Run time от которого толку нет?
что-бы писать еще пару классов шейдеров?

Некорректная отрисовка с помощью GL_ARB_vertex_buffer_object когда формат вершины содержит Tangent и Binormal30 июня 20070:29#2
innuendoВсе проблема решена.
Просто последовательность в TBNVertex и Vertex  пероменяны местами ноомаль и текстурные координаты.
Тема закрыта.

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

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