forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Имитация водной поверхности. (http://forum.boolean.name/showthread.php?t=15000)

moka 19.08.2011 20:54

Ответ: Имитация водной поверхности.
 
А где скрины снова???

dsd 19.08.2011 20:58

Ответ: Имитация водной поверхности.
 
Да прямо перед кодом шейдера, сэр.

Mr_F_ 19.08.2011 21:07

Ответ: Имитация водной поверхности.
 
Цитата:

Вот этот слегка модифицированный шейдер из шагов рисует такую картинку.
брр что это?
я же говорил уже про флоатовые текстуры. не нужно ничего никуда кодировать.

dsd 19.08.2011 21:11

Ответ: Имитация водной поверхности.
 
Омг.
Единственный способ получения текстуры из шейдера в хорс, который я умею это отрендрить в текстуру изображение рендервурлдом или рендереентитей. Если есть более простой и прямой способ просвети меня, гуру. Я тогда в твою честь авемарию спою :)

Mr_F_ 19.08.2011 21:20

Ответ: Имитация водной поверхности.
 
всё делаешь как обычно, НО создаёшь текстуру с флагом 256 (если ниче не поменяли с момента когда я юзал ксорс) - в ней будут не 4 цвета по байту храниться, а один цвет в формате дробного числа.
ты просто делаешь в PS return depth и не паришься.

dsd 19.08.2011 21:34

Ответ: Имитация водной поверхности.
 
PHP код:

//VS
float4x4 matrixWorldViewProj MATRIX_WORLDVIEWPROJ// матрица итоговая
float4x4 matrixWorld MATRIX_WORLD// матрица мировая

struct VS_INPUT
{
   
float4 position  POSITION;
};

struct VS_OUTPUT
{
   
float4 position  POSITION;
   
float depth  TEXCOORD0;
};

VS_OUTPUT main_VSVS_INPUT In )
{
    
VS_OUTPUT Out;
    
Out.position mulIn.positionmatrixWorldViewProj);
    
Out.depth=Out.position.z;
    return 
Out;
}

//PS
struct PS_INPUT
{
   
float depth    TEXCOORD0;
};

float4 main_PSPS_INPUT IN ) : COLOR0
{
    return 
IN.depth;
}; 

Ты про це? у меня он чет не работает :(

Mr_F_ 19.08.2011 21:50

Ответ: Имитация водной поверхности.
 
ну всё правильно у тебя сейчас.
если попытаешься отобрзазить дептх текстуру, то вблизи выйдет голубое а после единичной дистанции - белое.

dsd 19.08.2011 22:29

Ответ: Имитация водной поверхности.
 
output.depth = output.position.z; Вот это значение которое я делаю в вершинном шейдере равно расстоянию между этой вершиной и камерой в хорсе или нет?

Mr_F_ 19.08.2011 22:44

Ответ: Имитация водной поверхности.
 
по идее да.

dsd 20.08.2011 14:52

Ответ: Имитация водной поверхности.
 
Пришла идея 3д редактора многопользовательского.

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

Основная фишка: других юзеров можно бить по рукам и встроенный голосовой чат :)

dsd 22.08.2011 16:56

Ответ: Имитация водной поверхности.
 

Я написал какой-то ужас таки почти не рисующий ненужные вертексы без буферов глубины и прочей хрени :) правдо оно не рисует вертексы которые дальше позиции ентити от камеры :(

dsd 25.08.2011 20:35

Ответ: Имитация водной поверхности.
 
\window\main.cpp||In function 'int Horse()':|
\window\main.cpp|15|error: invalid conversion from 'HWND__*' to 'Handle'|
\window\main.cpp|15|error: initializing argument 1 of 'void xSetRenderWindow(Handle)'|
||=== Build finished: 2 errors, 1 warnings ===|

Как правильно HWND в хэндл окна понятный xSetRenderWindow(Handle) сконвертировать?

Mr_F_ 25.08.2011 21:13

Ответ: Имитация водной поверхности.
 
xSetRenderWindow((Handle)hwnd);

у меня работало

dsd 27.08.2011 02:25

Ответ: Имитация водной поверхности.
 
1. Сравниваю нормаль вершины и вектор от камеры до вершины. При угле меньшем 90 точка видна.
2. Пишу в массив координаты видимых точек и расстояния от камеры до каждой из точек. Сортирую точки по расстоянию. И еще разбиваю на квадраты само изображение и для каждого нахожу ближайшую точку.
3. Теперь для ближайшей узнаю каким полигонам она принадлежит, они точно видимые. Получаю первый и стопицотый «островок видимости». Ставлю флаг обработанным вершинам. Выкидываю те вершины которые не обработались и попали в границы островков.
4. Анализирую полигоны имеющие в себе стопудово видимые вершины. После обхода каждого острова маркирую скрывшиеся вершины, и так пока все вершины не получат флаг видимости-невидимости.

А теперь расскажите как это делают нормальные люди :)

moka 27.08.2011 02:33

Ответ: Имитация водной поверхности.
 
А у Xors3D нету возможности пикать триангл? Думаю если есть пики, то и триангл найти от пика не составит труда.
Таким образом имея данные о триангле, можно получить данные о его вершинах..

А ваще это изврат делать подобного рода вещи на такого рода движке. Для этого лучше писать свой гапи, свой формат моделей и напрямую работать с ними, это будет лучше в разы, меньше изврата, больше доступа ко всему и контроля..


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

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