 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
02.07.2011, 18:06
|
#121
|
Бывалый
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений (для 406 пользователей)
|
Ответ: Имитация водной поверхности.
Нашел баг.
Кажется, генератор не дорисовал картинку)

|
(Offline)
|
|
02.07.2011, 18:07
|
#122
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Имитация водной поверхности.
Не это я на высоте 0 отметку даю таким цветом  В той точке ровно ноль
А, я не могу, оно оказывается еще и бесшовную текстуру рожает  .
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.07.2011, 21:07
|
#123
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Имитация водной поверхности.

Второй эскиз террэйна.
Последний раз редактировалось dsd, 10.08.2011 в 03:06.
|
(Offline)
|
|
03.07.2011, 18:45
|
#124
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Имитация водной поверхности.
Написал первый порношейдер методом... В общем, неправильным методом  . Делает он следующее рисует текстуру и все. Потом мне захотелось добавить функциональности в вершинный шейдер, сделал ввод переменной из хорса в шейдер. Далее решил умножить координаты вертексов на синус от введенной переменной.

//Матрицы
//xSetEffectMatrixSemantic tModel,"MatWorldViewProj",WORLDVIEWPROJ
//xSetEffectMatrixSemantic tModel,"MatWorld",WORLD
float4x4 MatWorldViewProj;
float4x4 MatWorld;
// вношу время из хорса
float time;
// Объявление переменных в данном случае вывод пиксельного шейдера
static float3 Color;
static float4 cD;
//Передача тестуры в шейдер
//xSetEffectTexture tModel, "InShaderTextureName",texDiffuse
const texture InShaderTextureName;
sampler TexDiffuse=sampler_state { //тут я говорю что текстура Diffuse типа
Texture = <InShaderTextureName>;
};
//###### Ввод в вершинный шейдер ##################
struct VertexShaderInput {
float4 Position : POSITION0; // мировая позиция вершины
float3 Normal : NORMAL; // нормаль к этой вершине
float2 TexCoords : TEXCOORD0; // координаты точки на текстуре
};
//# Вывод вершинного шейдера = ввод пиксельного ###
struct PixelShaderInput {
float4 Position : POSITION0; //новая мировая позиция вершины
float4 pWorld : TEXCOORD0;
float3 Normal : TEXCOORD1;
float2 TexCoords : TEXCOORD2;
};
//вершинный шейдер
void NameOfVertexShaderFunction( in VertexShaderInput IN, out PixelShaderInput OUT ) {
//OUT.Position = mul((mul(IN.Position,MatWorldViewProj)),cos(time));
[b]OUT.Position = mul(IN.Position,MatWorldViewProj)*cos(time);[/b]
OUT.pWorld = mul(IN.Position,MatWorld);
OUT.Normal = normalize(mul(IN.Normal,MatWorld));
OUT.TexCoords = IN.TexCoords;
}
//пиксельный шейдер
float4 NameOfPixelShader( in PixelShaderInput IN ) : COLOR {
cD = tex2D(TexDiffuse,IN.TexCoords);
Color = cD.rgb;
return float4(Color,cD.a);
}
//################## Technique ##################
// здесь расположен проход этот кусок заставляет исполняться шейдер
//xSetEffectTechnique tModel,"TechniqueName"
technique TechniqueName {
pass p0 { //проход рендера их может быть несколько с разными шейдерами
AlphaBlendEnable= false;
vertexshader = compile vs_2_0 NameOfVertexShaderFunction();
pixelshader = compile ps_2_0 NameOfPixelShader();
}
}
Но вместо плавного морфинга получилось моргание меша, на который применен мой чудо шейдер, это от того что в float4 Position : POSITION0; есть еще и W и умножение на синус и дает такой чудный эффект моргания?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.07.2011, 21:19
|
#125
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Имитация водной поверхности.

рэвин хорстридэ и начинающий его юзер
|
(Offline)
|
|
04.07.2011, 03:10
|
#126
|
Бывалый
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений (для 450 пользователей)
|
Ответ: Имитация водной поверхности.
Эммм дак ты нифига себе че делаешь то)) Ты сначала умножаешь координаты вертекса на ввп матрицу, а ПОТОМ умножаешь на косинустайм. Есстественно на экране будет ппц что...
Тебе надо сначала умножить координаты так как хочешь, а потом уже умножать на матрицу.
Примерно так:
v2f o;
float CosTime = (cos(_Time.y) * 0.5 + 0.5);
o.pos = v.vertex;
o.pos.xyz = o.pos.xyz * CosTime;
o.pos = mul(UNITY_MATRIX_MVP, o.pos);
return o;
_Time.y это то что у тебя просто time.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.07.2011, 12:47
|
#127
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Имитация водной поверхности.
POSITION0; есть еще и W и умножение на синус и дает такой чудный эффект моргания?
|
совершенно верно! яже говорил уже тебе, что на ето W будет потом делиться все остальные компоненты. меш типа увеличивается в бесконечноть? умножай только первые три компоненты, а четвертую не трож.
фу hlsl
столько лишней писанины
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.07.2011, 14:01
|
#128
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Имитация водной поверхности.
Проще разделять координаты оперируя координата.x, координата.y, координата.z или получить вектор позиции A(x,y,z,w), потом уже работать с ним? Если допустим хочу сжать модель по Z в два раза то получаю итоговый вектор В(x,y,0.5*z,w) и с ним уже имею конструкцию выводящую из вертексного шейдера: OUT.Position = mul(В(x,y,0.5*z,w),MatWorld)?
И как я понимаю в OUT.Position будет записана не координата в позиции меша, а координата вертекса относительно глобальных мировых координат сцены?
Вот это должно сжать модель по Зед, так или не так?
mul(mul(IN.Position,B(1,1,0.5,1)),MatWorld)
|
(Offline)
|
|
04.07.2011, 14:40
|
#129
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Имитация водной поверхности.
mul(float4((IN.Position.xyz * float3(1.0,1.0,0.5)),IN.Position.w),MatWorld).
Писал в броузере.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.07.2011, 20:32
|
#130
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Имитация водной поверхности.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
|
|
04.07.2011, 21:08
|
#131
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Имитация водной поверхности.
настолько недоделанные меши лучше не показывать. что ты хочешь о них услышать то?
|
(Offline)
|
|
04.07.2011, 21:11
|
#132
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Имитация водной поверхности.
Лучше кодь, а модельки дай другим поделать или скачай с онлайна..
|
(Offline)
|
|
04.07.2011, 21:11
|
#133
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Имитация водной поверхности.
Славу гнома хочет
Глаза то кул
|
(Offline)
|
|
04.07.2011, 21:26
|
#134
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Имитация водной поверхности.
Господа, мой код еще страшней моих моделек. Но сиськи как живые вроде 
|
(Offline)
|
|
04.07.2011, 21:35
|
#135
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Имитация водной поверхности.
Но сиськи как живые вроде
|
не. в кучку как-то собраны, в реале они должны больше в стороны быть направлены.
сверху ещё у тебя типа шов между ними, в реале там его практически нет (потому что они оттуда как бы расти начинают).
http://thumbs.dreamstime.com/thumbla...6161b3U3Kx.jpg
ключиц я тоже чет не вижу у него.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:34.
|