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

::3D Software rendering contest [finished]:: (64 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 161 62 63 64 65 66 Следующая »
#945
18:41, 8 сен. 2011

.L
> > уже все модификаторы работают ? чтобы было как в DX ? :)
> какие модификаторы? Поясни

модификаторы интерполяторов - centroid, flat, noperspective :)


#946
18:42, 8 сен. 2011

Futurist
> Ага на последней версии...
уу )  А что за железо? (процессор, память)

#947
18:50, 8 сен. 2011

innuendo
> модификаторы интерполяторов - centroid, flat, noperspective :)
что-то я в DX видел только centroid семплинг  о_О  Погуглил - гуглится только для GL - flat, noperspective

#948
18:52, 8 сен. 2011

C2D 8400(4GHz) 4x2048Mb win7 x64

#949
18:53, 8 сен. 2011

.L
> модификаторы интерполяторов - centroid, flat, noperspective :)
> что-то я в DX видел только centroid семплинг о_О Погуглил - гуглится только
> для GL - flat, noperspective

смотри dxhelp

#950
19:02, 8 сен. 2011

innuendo
> смотри dxhelp
Дык смотрел. Мало смотрел чтоли о_О  В поиск вбил как flat так и noperspective и no perspective - ничего нет.  Поиск меня забанил?

В доках OpenGL сказано:

An attribute variable declared as "FLAT" will be flat-shaded.  For such
variables, the value of the attribute will be constant over an entire
primitive and will taken from the provoking vertex of the primitive

from the provoking vertex - я не понял, это с какой же вершины берётся значение? о_О С первой вершины примитива? Или как?

а, я просто затупил )

#951
19:50, 8 сен. 2011

Во, кстати, вопрос:

для меня один момент в интерполяции не ясен - в каких типах регистров применяется перспективная коррекция при интерполяции (речь о DirectX) ? Только TEXCOORD или где ещё?


upd:  oh sh..

Color values input to the pixel shader are assumed to be perspective correct, but this is not guaranteed (for all hardware). Colors sampled from texture coordinates are iterated in a perspective correct manner, and are clamped to the 0 to 1 range during iteration.

тоесть на одном железе у меня будет цвет интерполироваться с перспективной коррекцией а на другом нет? Жырнота

#952
19:52, 8 сен. 2011

.L
> в каких типах регистров применяется перспективная коррекция
Вроде бы во всех типах, а вот TEXCOORD,как раз, при желании можно интерполировать без коррекции - texldp.

#953
20:00, 8 сен. 2011

Mikle
> Вроде бы во всех типах, а вот TEXCOORD,как раз, при желании можно
> интерполировать без коррекции - texldp.
про отключение коррекции я вкурсе. Хм, спасибо.

Такс, надо бы Всё на MMX перенести. Тут какраз всё офигенно параллелится, кеш-френдли + можно блоками обрабатывать (какраз для MMX/SSE)

#954
21:10, 8 сен. 2011

что-то не допонял L сделал эмуляцию шейдеров на проце в своем софтварном двиге?

#955
21:26, 8 сен. 2011

SoftRender_v0_2

добавил простую загрузку весьмаа сложного формата -  "BMP" :3  Вот, с перспективной коррекцией.  Выборка (и вообще всё) какоето медленное. Хм (

#956
21:27, 8 сен. 2011

Darth Vader
> что-то не допонял L сделал эмуляцию шейдеров на проце в своем софтварном двиге?
нет.  L слишком ленив для тогго \, чтобы этим сейчас заниматься.  В C# можно компилить код прямо во время выполнения программы.  Шарп рулит ^^  Ну тоесть у меня там есть полнофункциональные шейдеры, просто они не в отдельной VM мною написанной выполняются а компилятся из файлов фреймворком

#957
22:45, 8 сен. 2011

.L
SoftRender_v0_2 запустился, FPS показывает от 1800 до 5400, очень нестабильно, сделай подсчёт хотя бы за 3-4 секунды, а то, видимо, FPS сильно зависит от того, боком к нам треугольник, или нет.
Core i5 4*3.1GHz, 2*2Gb DDR3 - 1333.

#958
23:07, 8 сен. 2011

Mikle
> а то, видимо, FPS сильно зависит от того, боком к нам треугольник, или нет.
да, именно так.  В самой последней версии с текстурой фпс мне не  особо важен (там же всё движется). 


Mikle
> сделай подсчёт хотя бы за 3-4 секунды
у меня  выводится среднее значение за последние 10 кадров.

#959
1:02, 9 сен. 2011

Добавил вершинные и индексные буферы, InputLayout, Vertex/fragment shaders

Теперь использование опять такое же как и в DX - создал буферы, шейдеры, input layout - установил и вызывай Draw...

Можно настраивать количество регистров для интерполяции. Все интерполируются с перспективной коррекцией! На данный момент в демке идёт интерполяция 8 float4 регистров..  Очень медленно!  Сейчас добавлена куча float делений и множество умножений. Не айс.  Z-тест временно отключен, FPS изза большого количества FP операций сильно упал (  Позже подниму : )

SoftRender_v0_2_1

кусочек кода из проги:

int sx = 320;
  int sy = 240;

  RenderWindow w;
  w.SetSize(sx, sy);
  w.SetCaption("Tile based software renderer by .L");

  BlockRasterizer rasterizer(sx, sy, (HWND)w.GetWindowHandle());

  Matrix4x4 mWorld;
  Matrix4x4 mView;
  Matrix4x4 mProj;

  //setup matrices
  Mat4x4Identity(&mWorld);
  Mat4x4LookAtLH(Vector3D(0.0f, 1.5f, -3.5f), Vector3D(0.0f, 0.5f, 0.0f), Vector3D(0.0f, 1.0f, 0.0f), mView);
  Mat4x4PerspectiveFOV(3.1415f / 4.0f, (float)sx / (float)sy, 0.1f, 100.0f, mProj);

  //setup vertex buffer
  VertexBuffer* vb = new VertexBuffer(Vertex::stride() * 6, Vertex::stride());
  Vertex geom[6];
  geom[0] = Vertex(Vector4D(-1.0f, 0.0f, 0.0f, 1.0f), Vector2D(0.0f, 1.0f));
  geom[1] = Vertex(Vector4D( 0.0f, 1.0f, 0.0f, 1.0f), Vector2D(0.5f, 0.0f));
  geom[2] = Vertex(Vector4D( 1.0f, 0.0f, 0.0f, 1.0f), Vector2D(1.0f, 1.0f));
  geom[3] = Vertex(Vector4D(-1.0f, 0.0f, 0.0f, 1.0f), Vector2D(0.0f, 1.0f));
  geom[4] = Vertex(Vector4D( 0.0f, 0.0f, -1.0f, 1.0f), Vector2D(0.5f, 0.0f));
  geom[5] = Vertex(Vector4D( 1.0f, 0.0f, 0.0f, 1.0f), Vector2D(1.0f, 1.0f));

  //write vertex data to vertex buffer
  vb->Write(&geom[0], 0, Vertex::stride() * 6); //FIX IT!  Check for overflow!!

  //define input layout elements
  InputElement elements[] = 
  {
    InputElement(STR("POSITION"), 0, RT_FLOAT4, 0),
    InputElement(STR("TEXCOORD"), 16, RT_FLOAT2, 0)
  };

  //create input layout (for input assembler)
  InputLayout* layout = new InputLayout(elements, 2);

  //default shaders
  VSDefault* vs = new VSDefault();
  PSDefault* ps = new PSDefault();

  vs->mView = mView;
  vs->mProj = mProj;
  vs->mWorld = mWorld;

  rasterizer.SetVertexShader(vs);
  rasterizer.SetPixelShader(ps);
  rasterizer.SetInputLayout(layout);
  rasterizer.SetVertexBuffer(vb, 0);
  rasterizer.SetPrimitiveType(PT_TRIANGLE_LIST);

Пока не очень красиво но я над этим работаю ) 

Страницы: 161 62 63 64 65 66 Следующая »
ПрограммированиеФорумГрафика

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