ПрограммированиеФорумГрафика

Атмосфера: вид из космоса и с поверхности (4 стр)

Страницы: 13 4 5 612 Следующая »
#45
14:03, 26 авг 2009

Executor, у меня тут ХП, но дома на винде 7 работало, проект правда не конкретно этот.. но исходник за основу был взят тот же
Какая у Вас видюшка? Работает вроде на восьмой серии нвидии и выше...
Попробуйте пересоберите мою ехе'шку, если просто мой бинарник запускали...

Сейчас сам скачал этот файлик, скомпилил проект... все работает, но на ХП... под вин7 проверить сейчас нет возможности.

#46
14:12, 26 авг 2009

Белые точки это мелочь, вставишь туда свою планету и сразу уйдут белые точки, он же считай почти рейтрес прямоугольника в демке делает, конечно у него там артефакты на границе с космосом.
Какой релиз смотрите ? Первый или второй поправленный, ссылка на который лежит на геймдев.нет: http://www.gamedev.net/community/forums/topic.asp?topic_id=508117 (последний пост)

#47
15:30, 26 авг 2009

someone, спасибо! То что я использовал и выложил тут это первая версия. Причем я ее немного менял. Соберу второй исходник.
Не могу понять как туда планету свою прилепить... в этом основная проблема. Насколько я понял, он шейдером рисует на прямоугольнике. Земля отрисовывается в earth.glsl?
Подскажите, пожалуйста, как и где рисовать сетку ландшафта и другие объекты в таком случае?
Я рисовал Землю (тупо сферу) примитивной функцией gluSphere вроде.
Прочие объекты заталкивал в VBO. При перерисовке кадра вызывал его.
Для моих задач этого было вполне достаточно, но душа тянется к прекрасному)))
Буду разбираться. Спасибо!

#48
15:49, 26 авг 2009

Там всё очень просто, убирай рендер прямоугольника на весь экран.
Вот тебе примитивный шойдер земли на Cg (я переводил на Cg его шейдеры):

#include "common.cgfxh"

float3 lightDirection : lightDirection;
float3 eye_position;

struct VS_IN
{
  float2 pos : POSITION;
};

struct PS_IN
{
  float4 oPos : POSITION;
  float3 pos : TEXCOORD0;
  float2 uv : TEXCOORD1;
  float3 view_vector : TEXCOORD2;
  float4 hpos : TEXCOORD3;
};

sampler2D heightMap : TEXUNIT10 = sampler_state
{
  generateMipMap = false;
  minFilter = Linear;
  magFilter = Linear;
};

sampler2D diffuseMap : TEXUNIT11 = sampler_state
{
  generateMipMap = true;
  minFilter = Linear;
  magFilter = Linear;
};

sampler2D normalMap : TEXUNIT12;

sampler2D detailMap : TEXUNIT13;

samplerCUBE skyBox : TEXUNIT14 = sampler_state
{
  generateMipMap = true;
  minFilter = Linear;
  magFilter = Linear;
};

float3 groundColorNonSpherical(float3 x, float3 v, float3 s, float r, float mu,float3 terrain_reflectance,float3 shading_point,float3 normal)
{   
  float3 x0 = shading_point;

  // ground reflectance at end of ray, x0
    float3 n = normal;
    float3 reflectance = terrain_reflectance*0.2f;

    // direct sun light (radiance) reaching x0
    float muS = saturate(dot(n, s)+0.3f);
    float3 sunLight = transmittanceWithShadow(length(x0), muS);

    // precomputed sky light (irradiance) (=E[L*]) at x0
    float3 groundSkyLight = irradiance(irradianceSampler, length(x0), muS);

    // light reflected at x0 (=(R[L0]+R[L*])/T(x,x0))
    float3 groundColor = reflectance * (max(muS, 0.0) * sunLight + groundSkyLight) * ISun / M_PI;

    // attenuation of light to the viewer, T(x,x0)
    float3 attenuation = transmittance(r, mu, v, x0);

  return attenuation * groundColor; //=R[L0]+R[L*]
}

PS_IN VS(in VS_IN IN)
{
  PS_IN OUT;
 
  ........
  OUT.uv = .......;
  float H = tex2D(heightMap,OUT.uv).x;
 
  float4 f4pos = make_position_on_earth_sphere(float4(IN.pos.xy*100,H,1.0f));

  OUT.view_vector = (f4pos.xyz-eye_position);

  OUT.oPos = mul(modelViewProj,f4pos);
  OUT.pos = f4pos.xyz; 
  OUT.hpos = mul(modelViewProj,f4pos);

  return OUT;
}

float4 PS(in PS_IN IN) : COLOR0
{
  float3 s = normalize(sun_direction);
  float3 v = normalize(IN.view_vector);
  float3 x = eye_position.xyz;
  float3 earth_pos = make_position_on_earth_sphere(IN.pos.xyz);
 
  float r, mu;

  float3 normal = normalize(tex2D(normalMap,IN.uv.xy).xyz*2-1);
 
  float4 detail = tex2D(detailMap,IN.uv.xy*100.0f);
  float4 albedo = tex2D(diffuseMap,IN.uv.xy)*detail;
 
  float r_,mu_;

  float3 inscatterColor = fullGroundInscatter(x, v, s, earth_pos, r, mu); 
  r_ = r;
  mu_ = mu;

  float3 groundClr = groundColorNonSpherical(x, v, s, r_, mu_, albedo, earth_pos.xyz, normal);  //R[L0]+R[L*]+S|x-T(x,xs)S|xs
  return float4(HDR(groundClr+inscatterColor),1.0f);  // Eq (16)???
}

technique terrain
{
    pass
    {
        VertexProgram  = compile gp4vp VS();
        FragmentProgram = compile gp4fp PS();
    }
}


----------------
make_position_on_earth_sphere - чтоб точка лежала на сфере земли. 1 условная единица = 1км (может 100м не помню).
положение камеры тоже есесно в системе координат с цетром в центре земли, осью зед к северному полюсу.
почитайте доку, чтобы хоть понимать что такое x, v, s, r, mu.

#49
16:05, 26 авг 2009

Neptune
> У меня сразу скомпилилось, и работало без проблем, и тифф нормальный, IrfanView
> открывает... Не знаю что у вас не получилось.

Скачал IrfanView... Да, РГБ он открывает, а на альфу благополучно забивает...
СнэгИТ хоть и конвертит, но при расмотрении оказалось, что альфу он просто чёрной делает...
Чего за ТИФФ такой неведомый, что его никто не понимает? Ппц, уже замучился...

Или подскажите тогда уж как эту тиффлиб собрать?

Правка:
Нашёл инфу как собрать - http://libtiff.maptools.org/build.html
Но кучу ошибок вываливает...

Chertov
> Какая у Вас видюшка?

GF9600GT

#50
16:40, 26 авг 2009

Executor
В альфе там просто маска воды, чтоб блик от морей и рек делать. IrfanView это смотрелка картинок, нафиг ей альфа канал? Вот он его и не грузит, хотя в настройках что-то связанное с ним есть. Неужели фотошоп не откроет?
libtiff можно и не собирать, скачай бинарники, и все дела.
Или просто скачай текстуру Земли с альфой в png, например здесь.

someone
Да, ничего себе примитивный:))) Оказывается я совсем не знаю Cg...

#51
16:40, 26 авг 2009

someone, спасибо! Статью читал, в теории немного представляю что к чему.

Executor, ну тогда даже и не знаю... дома проверю на винде7

#52
16:44, 26 авг 2009

Neptune
> В альфе там просто маска воды, чтоб блик от морей и рек делать.

Это понятно...

> IrfanView это смотрелка картинок, нафиг ей альфа канал?

Чтобы я мог сохранить в другом формате... Проблема та в том, что тиффлиб не знаю как собрать, хотел сконвертить в какойто нормальный формат и собственно юзать его... А этот тифф никто понять не может, либо видят только альфу, либо видят только РГБ, фотошоп видит всё, НО он треть картинки обрезает...

> libtiff можно и не собирать, скачай бинарники, и все дела.

На офф сайте я ничего подобного не нашёл...

> Или просто скачай текстуру Земли с альфой в png, например здесь.

Она без альфы! :(

Chertov
> Залил сюда проект http://narod.ru/disk/12437336000/Earth%20Render.rar.html

В твоей картинке нет альфы!

#53
16:57, 26 авг 2009

Executor
>На офф сайте я ничего подобного не нашёл...
Вот тебе бинарники, сам вчера качал: http://gnuwin32.sourceforge.net/packages/tiff.htm
Раздел Download, Complete package, except sources.
>Она без альфы! :(
Странно, у меня почему-то с альфой... А почему-это фотошоп что-то там отрезает?
Попробуй текстуру без альфы загрузить, по-идее просто всё будет блестеть, и океаны, и материки

#54
17:14, 26 авг 2009

Executor, тиффлиб когда-то давно собирал, но удобнее загружать нвидивской либой, например.
Юзаю пнг... в нем можно сохранить альфу. Но тут она мне не нужна была.

Neptune, у меня такое ощущение что тиффка там битая, я поэтому и поменял на загрузку пнг.

#55
17:26, 26 авг 2009

Neptune
> Вот тебе бинарники, сам вчера качал:
> http://gnuwin32.sourceforge.net/packages/tiff.htm
> Раздел Download, Complete package, except sources.

Спс, попробую...

> Странно, у меня почему-то с альфой...

Хз, я фотошопом открыл и альфа канала там не обнаружил...
ИрфанВью говорит что она 24 бита (то бишь без альфы), на тифф покрайней мере говорила, что 32 бита (с альфой)...

> А почему-это фотошоп что-то там отрезает?

Спроси у Адобе... :)

#56
17:49, 26 авг 2009

Скомпилил... При загрузке тиффа ошибка:
earth.tiff: 20: Strip out of range, max 20.
Но картинка вроде загрузилась, правда если сильно приблизить - фигня однотонная земля становится...

#57
22:29, 26 авг 2009

Вам не пофигу на tiff, господа? Демка про атмосферу, а не высокодетализированную планету Земля?

#58
0:39, 27 авг 2009

someone
> Вам не пофигу на tiff, господа? Демка про атмосферу, а не
> высокодетализированную планету Земля?

Просто я хотел пощупать как оно в оригинале...

#59
10:31, 27 авг 2009

В оригинале -  смотрите видео на геймдев.нет :) вот там вообще
убийственно красиво)

Страницы: 13 4 5 612 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.