Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 11.08.2012, 01:51   #451
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

в общем вроде баг хотя может опять мне кажется )

вот этот класс:


class bug{
public:
Engine *eng;
Scene *s;
int segments;
Entity *body;
Surface *surf;

bug(Scene *sc){
eng = Engine::Instance();
s=sc;
    segments=256;
    surf=CreateSurface(segments);
    body = s->Add(surf);
	StandartShaders::Render::OnlyNormals()->SetUniform(Shader::SU_LIGHTPOS,vec3(0,5,7));
    body->SetShader(StandartShaders::Render::OnlyNormals());
    body->SetPosition(-2,-2,-6);
}



Surface* CreateSurface(int segments)
{
Engine *eng = Engine::Instance();

    //считаю количество точек
    int count_vertices = (segments+1)*(segments+1);
    //считаю трианглы
    int count_indices = 3*segments*segments;

//создание поверхности
Surface *surf = eng->CreateSurface(count_vertices,count_indices);
surf->Lock();

//ставлю точки куда следует
int index=0;
for(int i=0;i<=segments;i++){
    for(int j=0;j<=segments;j++){
    vec3 position(i-0.5*segments,0,j-0.5*segments);
    vec3 normal(0,1,0);
    surf->SetVertexPosition(index,position);
    surf->SetVertexNormal(index,normal);
    surf->SetVertexTexCoord(index,0.01+0.97*i/(float)segments,0.01+0.97*j/(float)segments,0);
    index++;
    }}

//ставлю полигоны
int trian_index=0;
for(int i=0;i<segments;i++){
    for(int j=0;j<segments;j++){
    //вычисляю для текущей клетки индексы точек в углах
    int v0,v1,v2,v3;
    //i - текущий ряд // j-текущий столбец
    v0=i*(segments+1)+j;
    v1=v0+1;
    v2=v0+segments+1;
    v3=v2+1;
    surf->SetTriangle(trian_index,v0,v1,v2);
    trian_index++;
    surf->SetTriangle(trian_index,v1,v3,v2);
    trian_index++;
    }}
surf->RecalcTangents();
surf->UnLock();
return surf;
}

void Update(){

surf->Lock();

//ставлю точки куда следует
int index=0;
for(int i=0;i<=segments;i++){
    for(int j=0;j<=segments;j++){
    vec3 position(i-0.5*segments,0,j-0.5*segments);
    vec3 normal(0,1,0);
    surf->SetVertexPosition(index,position);
    surf->SetVertexNormal(index,normal);
    surf->SetVertexTexCoord(index,0.01+0.97*i/(float)segments,0.01+0.97*j/(float)segments,0);
    index++;
    }}
surf->UnLock();

}

};


создается там внутри поверхность.
потом вот этим методом делаю вид что переставил точки. вызываю его каждый кадр.
void Update(){

surf->Lock();

//ставлю точки куда следует
int index=0;
for(int i=0;i<=segments;i++){
    for(int j=0;j<=segments;j++){
    vec3 position(i-0.5*segments,0,j-0.5*segments);
    vec3 normal(0,1,0);
    surf->SetVertexPosition(index,position);
    surf->SetVertexNormal(index,normal);
    surf->SetVertexTexCoord(index,0.01+0.97*i/(float)segments,0.01+0.97*j/(float)segments,0);
    index++;
    }}
surf->UnLock();

}
В итоге оно сжирает всю память и падает. Как мне кажется это не есть хорошо.

Еще мои творения падают если текстуры назначать не по порядку.
в смысле если дать например на 0 слой любую, а потом на любой кроме 1 то приложение при запуске крэшится, хотя компилится без проблем.
плюс с назначением вторых текстурных координат какой-то странный косяк.

Последний раз редактировалось dsd, 14.11.2015 в 15:10.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (11.08.2012)
Старый 11.08.2012, 09:51   #452
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Странное.

Я сейчас в отпуске. Вернусь _ обязательно разберусь
(Offline)
 
Ответить с цитированием
Старый 12.08.2012, 22:52   #453
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.


Прикола ради сделал плоскость на которую накладывается шум шейдером.
Плюс генерируется новый шум при перемещении камеры на 60 единиц от позиции плоскости. И кажется мне что примерно так террэйн делать и следует

Кстати, почему на текстурной координате = 0 читается значение из 1 и наоборот?
http://rghost.ru/land.zip
(Offline)
 
Ответить с цитированием
Старый 13.08.2012, 19:35   #454
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.


Таки сделал бесшовную карту. Таки считает теперь само себе нормали и таки работает. И таки в сто раз проще по коду чем было бы в хорсе.

при этом пиксельный шейдер фактически нетронут :
uniform sampler2D texture0;

in vec3 fragmentn;
in vec2 fragmentuv;
in vec3 lightvec;

out vec4 color;

void main(void) {
float diff dot(fragmentn,normalize(lightvec));
color texture(texture0,fragmentuv)*diff;


Последний раз редактировалось dsd, 14.11.2015 в 15:10.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
FREE MAN (13.08.2012), HolyDel (13.08.2012), Nex (14.08.2012)
Старый 13.08.2012, 21:47   #455
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Странное.

Кстати, почему на текстурной координате = 0 читается значение из 1 и наоборот?
хз. надо посмотреть.

Таки сделал бесшовную карту. Таки считает теперь само себе нормали и таки работает. И таки в сто раз проще по коду чем было бы в хорсе.
круто. уважаю.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (14.08.2012)
Старый 14.08.2012, 11:09   #456
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Странное.

Сообщение от dsd Посмотреть сообщение
Таки сделал бесшовную карту. Таки считает теперь само себе нормали и таки работает. И таки в сто раз проще по коду чем было бы в хорсе.
Требует OpenCL.dll
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 14.08.2012, 13:26   #457
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Сообщение от pax Посмотреть сообщение
Требует OpenCL.dll
Вроде как эта длл с драйверами видеокарты поставиться должна была

Последний раз редактировалось dsd, 14.11.2015 в 15:10.
(Offline)
 
Ответить с цитированием
Старый 14.08.2012, 13:29   #458
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Странное.

Черный экран. Встроеное видео в Core i5.
Вложения
Тип файла: 7z axelynx_log.7z (2.1 Кб, 341 просмотров)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (14.08.2012)
Старый 14.08.2012, 13:31   #459
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Сообщение от pax Посмотреть сообщение
Черный экран. Встроеное видео в Core i5.
Это уже не ко мне ) так то я с движком ничего особенного не делал
(Offline)
 
Ответить с цитированием
Старый 14.08.2012, 13:34   #460
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Странное.

а почему демки/тесты для акселинкса в разделе ксорса кстати?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 14.08.2012, 13:37   #461
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Сообщение от pax Посмотреть сообщение
а почему демки/тесты для акселинкса в разделе ксорса кстати?
Лень новое название темы придумывать. Ну а так в разделе с++ наверно это быть должно.
(Offline)
 
Ответить с цитированием
Старый 14.08.2012, 13:53   #462
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Странное.

Требует OpenCL.dll

Странно. Последнем версии вроде должны были без зависимостей от опенсиэль
Возможно, сборка. Под. Мингв. Кривовата
(Offline)
 
Ответить с цитированием
Старый 14.08.2012, 22:28   #463
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.



теперь под 085 версией.
Немножко усложнил пиксельный шейдер.
теперь камера по поверхности террэйна ходит.
вроде поприкольней стало.

Только почему то вывод текста перестал работать.
                ground->Update();
                cam->Update();
                c->Clear();
                s->Render();
                c->SetBlendMode(BM_ALPHA);
                c->SetPosition(10,10);
                c->Print(L"fps: %d",eng->GetStatistics()->GetFPS());
                c->SetPosition(10,20);
                c->Print(L"tris: %d",eng->GetStatistics()->TrisRendered());
                c->SetPosition(10,45);
                c->Print(L"wtf?: %f",ground->GetY_Land(10,10));
                wnd->Flip();
Зы: а где можно про тесселяцию пример посмотреть?

Последний раз редактировалось dsd, 14.11.2015 в 15:10.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
HolyDel (14.08.2012), pax (14.08.2012)
Старый 14.08.2012, 23:26   #464
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Странное.

На GeForce 9600 GT идет хорошо. На краях террейна глюки запланированы?)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (14.08.2012)
Старый 14.08.2012, 23:45   #465
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Сообщение от pax Посмотреть сообщение
На GeForce 9600 GT идет хорошо.
ну оно на ноуте под 700 фпс дает, а ноут у меня не особо то резвый. плюс то что карту шума делает вообще без оптимизаций

Сообщение от pax Посмотреть сообщение
На краях террейна глюки запланированы?)
Неа, не запланированы. Это оно по краям читает противоположный край текстуры зачем то. но это лечится небольшим сжатием текстурных координат:
вместо surf->SetVertexTexCoord(index,i/(float)segments,j/(float)segments,0);

вот так сделать и ок :
surf->SetVertexTexCoord(index,0.01f+0.98f*i/(float)segments,0.01f+0.98f*j/(float)segments,0);
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
FREE MAN (15.08.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 18:09.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com