forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   Ground Generator (http://forum.boolean.name/showthread.php?t=15466)

Reizel 10.09.2011 13:59

Ground Generator
 
Генератор ландшафтов. Генерит занятные острова с водичкой. Водичка ОЧЕНЬ тормозит весь процесс , ибо много плейнов. В будущем будет динамичная вода (по формулам Лапласа) и не такая тормозная. Движок - блиц. Всех скачавших прошу написать конфиг компа и примерную скорость (тормозит\не тормозит).
ПС будет использоваться походу для новой 3D Out of Mind ;-)

Скриншот: (кликабельно)

PacMan 10.09.2011 14:55

Ответ: Ground Generator
 
Всё "летает". Конфигурация в подписи.

Amatsu 10.09.2011 15:06

Ответ: Ground Generator
 
Автор, чем так извращаться с плейнами, лучше сделай текстурирование земли по высоте, чтобы те участки, которые ниже воды, затенялись текстурой

Gector 10.09.2011 15:26

Ответ: Ground Generator
 
Цитата:

Сообщение от Amatsu (Сообщение 201863)
Автор, чем так извращаться с плейнами, лучше сделай текстурирование земли по высоте, чтобы те участки, которые ниже воды, затенялись текстурой

Поддерживаю только + еще один плейн поверх.

Reizel 10.09.2011 16:04

Ответ: Ground Generator
 
Ок, щас буду курить затенение вершин))

4yBa4Ok 11.09.2011 12:05

Ответ: Ground Generator
 
Все летает, конфиг:
AMD Athlon +1800 1,8Ггц; Nvidia GeForce 7600 GTS; 1гб оперативки; WinXP

Nex 11.09.2011 14:42

Ответ: Ground Generator
 
Нормалньо работает. Вода переходом напоминает маинкрафт. :)

St_AnGer 11.09.2011 15:52

Ответ: Ground Generator
 
Летает. Конфиг в подписи. Win 7 x86 Максимальная

LLI.T.A.L.K.E.R. 11.09.2011 23:08

Ответ: Ground Generator
 
Летает, но на глаз - ощущение будто скорость камеры занижена (может так и есть).

Заливайте папкой в архив. Не люблю создавать папку и помещать в неё список файлов.

Nex 12.09.2011 02:26

Ответ: Ground Generator
 
LLI.T.A.L.K.E.R., учись правильно распаковывать!

FireOwl 12.09.2011 23:27

Ответ: Ground Generator
 
Нормально работает. Летает и не падает.
Intel Core 2 Quad, Geforce 9600 GT, 2 Gb о.п. и Win7 x86

ABTOMAT 12.09.2011 23:46

Ответ: Ground Generator
 
Вообще довольно странно спрашивать, как оно работает. если нет ни лога, ни счётчика FPS и включена вертикальная синхра. Ну да, летает, летает. Генерится быстро. Это как в магазине спросить "Сколько вон то стоит?" и получить ответ "Много".
Pentium E 2ГГц 2яд. 4Гб DDR2 (винда видит только 3 Гб) GeForce GT 120M 1Гб

Nafi 14.09.2011 03:26

Ответ: Ground Generator
 
Тормозов не заметил. Но ничего нет для привязки. Ни FPS, ни колличества треугольников в сцене. Хочется задать разрешение. Или запустить в окне.

Core i5 M520 толи 1.17ГГц, толи 2.4ГГц плавает сама по себе.
nV GT 330M 512Мб
WinXP

Интересно в общем.

Reizel 14.09.2011 12:23

Ответ: Ground Generator
 
Ок, скоро будет демка, в ней:
Текстурированный ландшафт (методом мегатекстуры :-( ), водичка динамическая (по оператору Лапласа), с бликами, но без отражения.
+ поставлю счетчик FPS, конфиг разрешения, настройку vsync :)

Кусочек:

Reizel 14.09.2011 12:59

Ответ: Ground Generator
 
Все, сделал. Скачать можно здесь :)

moka 14.09.2011 13:26

Ответ: Ground Generator
 
Слушай а почему Blitz3D?
Вон в Xors3D какой сплаттинг можно делать на ландшафт.
Да и можно на вершинных шейдерах у водички вершины просчитывать, будет в разы шустрее.

Кстати и так достаточно шустро работает имхо, но почему Blitz3D?

Nafi 15.09.2011 07:12

Ответ: Ground Generator
 
А где wireframe mode ?
Спасибо за учет пожеланий.
Как то не видно что это волны. Чего-то монотонно синеватое и край "двигается". С другой стороны как сделать что бы было видно сам не знаю.

Reizel 15.09.2011 12:10

Ответ: Ground Generator
 
Moka, просто не оказалось никакого 3Д двигла под С++ на тот момент. Пришлось блиц юзать, да и простой он)

кстати, только вчера осознал, что выложил полное дерьмо. Во-первых, там было ЗЕРКАЛО(bbCreateMirror()) - для теста сделал, убрать забыл, что повлекло за собой жуткие тормоза и лаги. Во вторых - не сделал управление камерой. Сейчас задумался о переходе на хорс (только из за шойдеров, если научусь-таки их юзать).
Кстати, не подскажете что нибудь по HLSL??

PS Nafi: вайрфрейм как то забыл, сори, в следующей деме будет. А насчет воды - так то, что в деме, это волны, только они настолько рандомны, что непонятно, что к чему. Суть в том, что в с рандомным периодом вода встряхивается в рандомной точке, но несильно. Потому выглядит это примерно так же, как и поверхность воды в бочке во время дождя. Только замедленно. Сделаю на пробел потом мощное встряхивание :)

moka 15.09.2011 16:07

Ответ: Ground Generator
 
Шейдеры HLSL для Xors3D.

Randomize 16.09.2011 08:29

Ответ: Ground Generator
 
Блин не ужели ты задумал то же что и я?

Reizel 16.09.2011 14:22

Ответ: Ground Generator
 
Не,авторство OOM за мной)

Randomize 17.09.2011 01:32

Ответ: Ground Generator
 
Цитата:

Сообщение от Павел (Сообщение 202453)
Не,авторство OOM за мной)

ООМ 3Д? Хочу хочу хочу!

radiobutton 17.09.2011 12:33

Ответ: Ground Generator
 
Что такое ООМ?

Randomize 17.09.2011 12:41

Ответ: Ground Generator
 
Цитата:

Сообщение от radiobutton (Сообщение 202522)
Что такое ООМ?

Игра товарища Павла - Out of mind.
http://forum.boolean.name/showthread...360#post174360
Саму игру наверное уже врятли можно скачать в той теме, но если попросишь автор выложит (я надеюсь :) )

Reizel 17.09.2011 13:21

Ответ: Ground Generator
 
Я бы выложил, но к сожалению, еще весной у меня навернулись все проекты. А бэкапов не было :(

По теме:
Научился юзать шойдеры. Пока что балуюсь простенькими самописными шойдерками в отдельном проекте)) Когда научусь с ними на "ты", тогда переведу текстурирование ландшафта на шойдеры, водичку тоже, а там увидим)

Reizel 18.09.2011 19:17

Ответ: Ground Generator
 
эх, дема с шойдерами))
Земелька разрисовывается (пока что примитивно), есть водичка.
Правда, непойму, как сделать воду более непрозрачной. Можт кто знает...

Качать здесь
Управление: W - вперед, S - назад, Shift для ускорения, мышь.

Прошу затестить и выложить среднее ФПС :)

L.D.M.T. 18.09.2011 21:49

Ответ: Ground Generator
 
Вложений: 3
Павел, от блица так просто еще никто не уходил! :)
на скринах обычный blitz3d+fastlibs....

Reizel 18.09.2011 22:07

Ответ: Ground Generator
 
Хм, и что же я вижу?? водичка с рефлекшеном... Вашими фастлибами у меня будет выбивать такой эффект в 5-10 ФПС, + ландшафт явно "прекомпиленный". выглядит здорово, ничего не скажу, но это не то)

ПС нафиг блиц) хорс и шойдеры явно решают)))

ПС нада переходить на DirectX чистый походу...

Reizel 19.09.2011 00:58

Ответ: Ground Generator
 
Итак, очередная хрень(кликабельно):


управление клавишами W,S , shift для ускорения. Земелька разрисовывается ПОЛНОСТЬЮ шейдерами, потому такие тормоза и лаги, прошу меня и мои кривые руки за это простить :)

По дефолту стоит 640х480х16, но в файле screenconfig можно запросто поменять. Жду ваших комментариев - у кого сколько ФПС :)

moka 19.09.2011 01:25

Ответ: Ground Generator
 
ФПС 1000, из-за того что он такой высокий, и дельта никакая не используется для воды, то её ваще дёргает.

Плюс, фильрацию текстур в шейдере пропиши для земли.

Также, анимация вершин для воды, сделай её в вершинном шейдере, а не процессорно.

Nafi 19.09.2011 02:03

Ответ: Ground Generator
 
Тормозов нет. А вот ко времени привязать смысл наверно имеет. Что бы волны правильно двигались. Типа считать dt со времени предидущего кадра и в соответствии двигать вершины воды. А то при 1000FPS как-то оно невнятно дергается. Все-таки не бочка с водой, по которой ногой ногой пинают, а целое типа море )
В новом движке wireframe'инга как я понимаю больше нет?

З.Ы. МоКа вообще то то-же самое сказал. Спать пора...

moka 19.09.2011 14:46

Ответ: Ground Generator
 
Ещё кстати пометка. Если включаешь AlphaBlendEnable, то бленд будет типо Additive, поэтому в шейдере в технике пропиши сразу после включения альфа бленда:
Код:

SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;

Тогда будет просто альфа бленд, и никакого Additive.

Reizel 25.09.2011 12:13

Ответ: Ground Generator
 
Балуюсь:




MrFrosT1 25.09.2011 12:26

Ответ: Ground Generator
 
Цитата:

Сообщение от Павел (Сообщение 203371)
Балуюсь:




полу-молния-полу-дерево

Reizel 25.09.2011 12:35

Ответ: Ground Generator
 
Да, кстати, чем то на молнию смахивает))

Colossus 27.09.2011 20:16

Ответ: Ground Generator
 
Цитата:

Сообщение от Павел (Сообщение 203371)
Балуюсь:


как делал? )) и на чем?

Reizel 28.09.2011 10:25

Ответ: Ground Generator
 
Цитата:

Сообщение от Colossus (Сообщение 203564)
как делал? )) и на чем?

Xors3D, L-Systems

Reizel 04.11.2011 23:34

Ответ: Ground Generator
 
После небольшой паузы занялся-таки деревьями, и вот что получилось:



Знаю, что говно
Но
Деревья теперь не похожи на палки с натыкаными флажками :-D

Earlind 05.11.2011 00:08

Ответ: Ground Generator
 
Запустил демку старую. 20-40 фпс. За это я и не люблю блиц3д )). Там даже отсечения полигонов по матрице проекции нету.
Конфиг:
П4 2400 мгц, GeForсe 7600 GT, 1.5 gb ram DDRI.

Но, дно на скрине, надо сказать, меня дьявольски радует. Хорошо смотрится.

Reizel 05.11.2011 00:20

Ответ: Ground Generator
 
Уже не блиц, Xors3D... А вот деревья сейчас переделываю, и подумываю-таки над анимацией. В хорсе можно анимировать меш повертексно(программно) ??

dsd 05.11.2011 00:56

Ответ: Ground Generator
 
xCountVerteces();
xVertexCoords();
xVertexNormal();
xCalculateFrustumVolume();
И таки будет повертексная анимация :)

moka 05.11.2011 01:09

Ответ: Ground Generator
 
Не стоит..
Лучше уже "эмулировать" кости, создаёшь матрицы (кости), двигаешь их, и вершины по ним, в вершинном шейдере - скиннинг.

Earlind 05.11.2011 01:39

Ответ: Ground Generator
 
Нашёл демку на ксорсе, запустил. Фпс прыгает 60-1000. Странный фпс, но лагов не замечено. Так держать! Клёво смотрится.
Вопрос, а переход с травы на дно ты как делал? Мультитекстурирование или специальная текстура?

4yBa4Ok 05.11.2011 09:54

Ответ: Ground Generator
 
Цитата:

Сообщение от Earlind (Сообщение 208421)
Нашёл демку на ксорсе, запустил. Фпс прыгает 60-1000. Странный фпс, но лагов не замечено. Так держать! Клёво смотрится.
Вопрос, а переход с травы на дно ты как делал? Мультитекстурирование или специальная текстура?

Специальный шейдер)

Reizel 05.11.2011 10:15

Ответ: Ground Generator
 
Цитата:

Сообщение от MoKa (Сообщение 208416)
Лучше уже "эмулировать" кости, создаёшь матрицы (кости), двигаешь их, и вершины по ним, в вершинном шейдере - скиннинг.

Так мне ж не надо динамической анимации ствола и прочей дряни... Я посмотрел как сделано в Boiling Point::Road to Hell, там стволы стоят ровно, качается чуть - чуть листва, и я сомневаюсь, что там какая-либо физ.модель, скорее всего просто небольшое синусоидальное отклонение))

ПС Хорс , когда рендерит мир для расчета теней, он убирает шейдеры и прочую дурь с объектов?? А то если делать тени от солнца - это получается двойной рендеринг, а это серьезно положит мой ФПС:(

RegIon 05.11.2011 10:51

Ответ: Ground Generator
 
Демка генератора с синхронизацией 60-62,без синхра-до 1000(почему?)..
железо(индекс:5.1):cpu b940@2GHz,3GB,GeForse GT 520m 1gb

Reizel 05.11.2011 11:21

Ответ: Ground Generator
 
Синхра режет ФПС до 60

RegIon 05.11.2011 11:26

Ответ: Ground Generator
 
да чет не особо,я заметил...бывало на синхре и до 70ти прыгает....ТОРМОЗОВ нет

Reizel 05.11.2011 12:08

Ответ: Ground Generator
 
Косяк с Z-Buffer
Объясните, почему такие фэйлы?? Что нужно делать при построении сюрфейсов, чтоб не сбивался z буфер?

Earlind 05.11.2011 13:58

Ответ: Ground Generator
 
Цитата:

Так мне ж не надо динамической анимации ствола и прочей дряни... Я посмотрел как сделано в Boiling Point::Road to Hell, там стволы стоят ровно, качается чуть - чуть листва, и я сомневаюсь, что там какая-либо физ.модель, скорее всего просто небольшое синусоидальное отклонение))
Так помоему везде делают. Можно ещё сделать отклонение вершин по высоте сделать, в том числе и ствола. Чтобы верхушка сдвигалась сильнее, а низ был статичен. Не думаю, что алгоритм будет очень прожорливым.

Reizel 05.11.2011 14:06

Ответ: Ground Generator
 
алгоритм не будет прожорлив вообще, но если двигать вершинки по высоте, получится хрень) ибо некоторые ветви висят почти у земли.

ABTOMAT 05.11.2011 14:30

Ответ: Ground Generator
 
Цитата:

Сообщение от Павел (Сообщение 208450)
Косяк с Z-Buffer
Объясните, почему такие фэйлы?? Что нужно делать при построении сюрфейсов, чтоб не сбивался z буфер?

С альфой Z-буфер НЕ работает. Уже много раз обсуждалось.

1. Простое решение: не юзать альфу.
2. Строить сюрфейс в зависимости от дальности (вместо z-буфера ты делаешь сортировку руками)

Reizel 05.11.2011 14:56

Ответ: Ground Generator
 
Цитата:

Сообщение от ABTOMAT (Сообщение 208469)
1. Простое решение: не юзать альфу.

Огромное спасибо!!

ПС xLoadTexture("...",4)

ABTOMAT 05.11.2011 15:08

Ответ: Ground Generator
 

Reizel 09.11.2011 15:02

Ответ: Ground Generator
 
Итак, новая демка. Добавлена трава, и немного анимации шейдерами)
ПС без скринов, ибо грузил этот архив полчаса, инета нет :(

Скачать

dsd 09.11.2011 19:10

Ответ: Ground Generator
 
Трава супер, но деревья это пестец.
Да и лог в 250 мегабайт наверно жрет ресурсы на создание :)

А у меня с землей все окей:dontknow:

PHP код:

//  вектор в тридэ
class float3 {
    public:
    
float x;
    
float y;
    
float z;

    
float3(){
    
x=0.0f;
    
y=0.0f;
    
z=0.0f;
    }

    
float3(float afloat bfloat c){
    
x=a;
    
y=b;
    
z=c;
    }

    
void set(float afloat b,float c)
    {
      
x=a;
      
y=b;
      
z=c;
    }
};

float3 operator*(float3 afloat3 b){
float3 result;
result.x=a.y*b.z-b.y*a.z;
result.y=a.z*b.x-b.z*a.x;
result.z=a.x*b.y-b.x*a.y;
return 
result;
}

float3 operator*(float3 afloat b){
float3 result(a.x*b,a.y*b,a.z*b);
return 
result;
}

float3 operator*(float afloat3 b){
float3 result(b.x*a,b.y*a,b.z*a);
return 
result;
}

float3 operator+(float3 a,float3 b){
float3 result;
result.x=a.x+b.x;
result.y=a.y+b.y;
result.z=a.z+b.z;
return 
result;
}

float3 operator/(float3 afloat b){
float3 result;
result.x=a.x/b;
result.y=a.y/b;
result.z=a.z/b;
return 
result;
}


//*************
//*************
//-------------------------------------------
//класс триколелектион
class tree_col{
    public:
    
//***textures of leaves
Handle leaf_tex0;
Handle leaf_tex1;
Handle leaf_tex2;
Handle leaf_tex3;
    
//***textures of truncs
Handle bark_tex0;
Handle bark_tex1;
Handle bark_tex2;
Handle bark_tex3;
    
//***Handle of meshs for branch imitation
Handle trunc0;
Handle l1_branch0;
Handle l2_branch0;

//just for fan

double **data;
Handle temp;

//********************
tree_col(){
    
load_resources();
    
//mesh of trunc
    
float size=1;
    
trunc0=MakeMesh(4,size,size/5);
    
xEntityTexture(trunc0,bark_tex0);
    
xHideEntity(trunc0);
    
//texturifaing
    
l1_branch0=MakeMesh(4,32,4.3);
    
xEntityTexture(l1_branch0,bark_tex0);
    
xHideEntity(l1_branch0);
temp=xCreatePivot();

}

Handle Make_a_tree(float3 p,float3 r,float3 sint genHandle smeshfloat length){
   
//ignition
    
if(gen==0){
        
xFreeEntity(temp);
        
temp=xCreatePivot();
        
xPositionEntity(temp,p.x,p.y,p.z);}
    
Handle branch_mesh=smesh;
    
int generation=gen;
    
Handle mesh=xCopyEntity(branch_mesh,temp);
    
xScaleEntity(mesh,s.x,s.y,s.z);
    
xPositionEntity(mesh,p.x,p.y,p.z);
    if(
gen==0){  xPositionEntity(mesh,0,0,0);}
    
xAlignToVector(mesh,r.x,r.y,r.z,2,1);
    
xTFormPoint(0,0.9*length,0,mesh,temp);
    
float3 ch_pos(xTFormedX(),xTFormedY(),xTFormedZ());
    
int ch_num=xRand(1,3);
//  листва
if(gen==2){
        
Handle leaf=Make_a_Branch(length);
        
xEntityParent(leaf,temp);
        
xPositionEntity(leaf,ch_pos.x,ch_pos.y,ch_pos.z);
        
xScaleEntity(leaf,xRnd(30,35)*length/32,40*length/32,xRnd(30,35)*length/32);
        
xAlignToVector(leaf,r.x,r.y,r.z,2,1);}

    
//child generation
    
if(generation<2){

    
float seedh=xRnd(0,M_PI);
    
float seedv=xRnd(-0.1*M_PI,0.1*M_PI);

    for(
int i=0;i<ch_num;i++){
        
int genr=generation+1;
        
float xr=seedh+2*M_PI*i/ch_num+xRnd(-M_PI*0.1,M_PI*0.1);
        
//y-axis
        
float yr=seedv+0.15*M_PI+xRnd(-M_PI*0.3,M_PI*0.3);

        
float3 rt(cos(xr)*cos(yr),cos(yr),sin(xr)*cos(yr));
        
rt=rt+0.5*r;
        
//scale defenition
        
float3 scle(0.5*s.x,xRnd(0.6,0.8)*s.y,0.5*s.z);

        
Make_a_tree(ch_pos,rt,scle,genr,smesh,length);
        }
    }
    return 
temp;

}


Handle Make_a_Branch(float size){
        
Handle leaf=xCreateMesh();
        
Handle surf=xCreateSurface(leaf);
        
int v00=xAddVertex(surf,-1,0,0,0,0);
        
int v01=xAddVertex(surf,1,0,0,1,0);
        
int v10=xAddVertex(surf,-1,2,0,0,1);
        
int v11=xAddVertex(surf,1,2,0,1,1);
        
xAddTriangle(surf,v00,v01,v10);
        
xAddTriangle(surf,v01,v11,v10);
        
xAddTriangle(surf,v01,v00,v10);
        
xAddTriangle(surf,v11,v01,v10);
        
v00=xAddVertex(surf,0,0,-1,0,0);
        
v01=xAddVertex(surf,0,0,1,1,0);
        
v10=xAddVertex(surf,0,2,-1,0,1);
        
v11=xAddVertex(surf,0,2,1,1,1);
        
xAddTriangle(surf,v00,v01,v10);
        
xAddTriangle(surf,v01,v11,v10);
        
xAddTriangle(surf,v01,v00,v10);
        
xAddTriangle(surf,v11,v01,v10);
        
xEntityTexture(leaf,leaf_tex1);
        
xEntityFX(leaf,2);
        return 
leaf;
}

Handle MakeMesh(int segmentsfloat sizefloat radius){
    
gradient_noise(segments,1.33,3,rand());
       
Handle mesh=xCreateMesh();
       
Handle surf=xCreateSurface(mesh);
        
//создание плоскости
            
for(int i=0;i<=segments;i++){for(int j=0;j<=segments;j++){xAddVertex(surf,i,0,j,(double)i*3/segments,(double)j*3/segments);}}
            
int qvert=xCountVertices(surf);
    for(
int i=0;i<qvert-segments-1;i++){
        
int v0=i;
        
int v1=i+1;
        
int v2=i+segments+1;
        
int v3=v2+1;
            if(
v3<qvert && xMod(i,segments+1)!=segments){

                
xAddTriangle(surf,v2,v1,v3); xAddTriangle(surf,v2,v0,v1);
                 }}
    for(
int i=0;i<=segments;i++){for(int j=0;j<=segments;j++){
    
int index=i*(segments+1)+j;

    
//в 360 градусах 2*m_pi радиан

    
double crad=(radius+size*data[i%segments][j%segments]/32)*((segments-0.55*i)/segments);
    
double disp=3.5*sin(M_PI*i/(double)segments);

    
double sn=crad*sin(2*M_PI*j/(double)segments);
    
double cs=crad*cos(2*M_PI*j/(double)segments);

    
xVertexCoords(surf,index,sn,i*size/segments,cs);
    if(
i==segments){xVertexCoords(surf,index,0,i*size/segments,0);}}}
xUpdateN(mesh);
xCalculateFrustumVolume(mesh);
return 
mesh;
    }

void gradient_noise(int sizedouble sharpint diffint seed){

//создается массив для значений
srand(seed);
data=new double*[size+1];
for(
int i=0;i<=size;i++){data[i]= new double[size];}

        for(
int i=0;i<=size;i++){for(int j=0;j<=size;j++){data[i][j]=0;}}
        
//заполнение краев случайными числами (1;5)
        
int step=size>>2;
        for(
int i=0;i<=size;i=i+step){
        for(
int j=0;j<=size;j=j+step){
         
data[i][j]= xRnd(-5,5);}}


        
step=size>>1;
        while(
step>0){
            
//первая строка
            
for(int i=step;i<=size-step;i=i+2*step){
                for(
int j=step;j<=size-step;j=j+2*step){

                    
//вычисление необходимых индексов
                    
int x0=i-step;
                    if(
x0<0){x0=x0+size;}
                    
int x1=i+step;
                    if(
x1>=size){x1=x1-size;}
                    
int y0=j-step;
                    if(
y0<0){y0=y0+size;}
                    
int y1=j+step;
                    if(
y1>=size){y1=y1-size;}

                
double val00=data[x0][y0];
                
double val01=data[x0][y1];
                
double val10=data[x1][y0];
                
double val11=data[x1][y1];

                if(
data[i][j]==&& val00!=&& val01!=&& val10!=&& val11!=0){
                    
data[i][j]=0.25*(val00+val01+val10+val11)+0.5*step*xRnd(-sharp,sharp);
                    
data[x0][j]=0.5*(val00+val01)+0.5*step*xRnd(-sharp,sharp);
                    
data[x1][j]=0.5*(val10+val11)+0.5*step*xRnd(-sharp,sharp);
                    
data[i][y0]=0.5*(val00+val10)+0.5*step*xRnd(-sharp,sharp);
                    
data[i][y1]=0.5*(val01+val11)+0.5*step*xRnd(-sharp,sharp);}
                }
            }
        
step=step>>1;}


        
//приведение значений в массиве в интервал (0;1)
        
double max=0;
        
double min=0;
        for (
int i=0;i<=size;i++){
            for (
int j=0;j<=size;j++){
                if(
data[i][j]>=max){max=data [i][j];}
                if(
data[i][j]<=min){min=data [i][j];}}}

    
double length=max-min;
    for (
int i=0;i<=size;i++){
        for (
int j=0;j<=size;j++){
            
data[i][j]=pow(((data[i][j]-min)/length),1);}}

}

void load_resources(){
    
//textures of leaves
//leaf_tex0=xLoadTexture("tex/branch1.dds",2);
leaf_tex1=xLoadTexture("tex/branch3.dds",4);
//leaf_tex2=xLoadTexture("tex/branch4.dds",4);
//leaf_tex3=xLoadTexture("tex/sacura2.dds",4);
    //textures of bark
bark_tex0=xLoadTexture("tex/bark0.jpg");
//bark_tex1=xLoadTexture("tex/bark1.jpg");
//bark_tex2=xLoadTexture("tex/bark2.jpg");
//bark_tex3=xLoadTexture("tex/bark3.jpg");

}


double xRnd(double mindouble max){
    
double length=max-min;
    
double var =((double) rand() / (double)RAND_MAX);
    
double value=min+var*length;
return 
value;
}
};


//********************
//управляющий код
//********************


tree_col trees;


        for(
int i=0;i<100;i++){
        
float3 pos(i,0,i);
        
float3 rot(0,1,0);
        
float3 scale(1,1,1);
        
int generation=0;
        
Handle  tr=xCopyEntity(trees.Make_a_tree(pos,rot,scale,generation,trees.trunc0,1));}

/*нужно иметь папку tex
в которой 
bark_tex0=xLoadTexture("tex/bark0.jpg"); текстура коры
leaf_tex1=xLoadTexture("tex/branch3.dds",4);текстура веток.*/ 


ABTOMAT 09.11.2011 19:24

Ответ: Ground Generator
 
Вложений: 1
Ой а у вас цвет от земли отклеился. А ещё оче тормозит и долго грузится.

Nerd 09.11.2011 21:20

Ответ: Ground Generator
 
Цитата:

Сообщение от ABTOMAT (Сообщение 209049)
Ой а у вас цвет от земли отклеился.

Это так долго шла загрузка, что зима наступила.

pax 09.11.2011 22:19

Ответ: Ground Generator
 
Текстуре травы кламп бы доавбить. Деревья имеют белую окантовку.
Еле выщел из демки, комп на пару минут не подавал признаокв жизни, а потом выдал страшное сообщение, что не смог запустить системную команду по Ctrl + Alt + Del :-D
И кстати да, супер лог файл.

Reizel 10.11.2011 22:24

Ответ: Ground Generator
 
Сделал траву. Скриншот (кликабельно)


ПС деревья остались дерьмом, но демка была запилена из за травы!!)
ПС ПС Грузится прога около 2-х минут!

pax 10.11.2011 22:32

Ответ: Ground Generator
 
Загружается в два/три раза дольше чем прошлая демка. Над травой летают белые пиксели. Покачивание неплохо сделано.

Reizel 13.11.2011 22:56

Ответ: Ground Generator
 


Осталось сделать рефракцию на воду (или как оно там называется) и SSAO. Ну и подогнать травку к ландшафту по цвету

Gector 13.11.2011 23:10

Ответ: Ground Generator
 
Цитата:

Сообщение от Павел (Сообщение 209580)


Осталось сделать рефракцию на воду (или как оно там называется) и SSAO. Ну и подогнать травку к ландшафту по цвету

Красиво, но фпс чтото стремный.

Reizel 14.11.2011 00:27

Ответ: Ground Generator
 
наверно после введения траве FX_DISABLECULLING текселей стало в 2 раза больше... + надо скрывать дальнюю траву, и шейдером опускать существующую на определенном отдалении


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot