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

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

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

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 06.10.2009, 09:37   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
XNA + Водичка

Я вот тут решил сделать водичку и никак не могу найти анимированной карты нормалей для этого. Хочется модифицировать вот этот примерчик для анимации водной поверхности вместо простого смещения текстурных координат в зависимости от времени...

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

И еще может кто знает ресурсы с готовыми решениями?

Я потом этот пример хочу портировать на Xen
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.10.2009, 10:04   #2
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: XNA + Водичка

Есть пример на b3d о превращении карты высот в карту нормалей.
в атаче он. пока что не могу больше написать,, надо спешить
Вложения
Тип файла: zip height_normal_bb.zip (205.0 Кб, 502 просмотров)
(Offline)
 
Ответить с цитированием
Старый 06.10.2009, 10:16   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: XNA + Водичка

Ну для простого преобразования карты высот в карту нормалей я знаю утилиту по серьезднее http://nifelheim.dyndns.org/~cocidius/normalmap/. Это плугин для GIMP. Вот бесшовную анимированную водичку сделать руками... это оч сложно помоему...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 09.10.2009, 13:45   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: XNA + Водичка

Ну вот дошло дело до реализации, написал простой шейдер воды (отражения от кубмэпа) без преломления и отражения сцены. Есть проблема: Чем дальше камера отдаляется от центра координат, тем сильнее искажается отражение. Если кто уже писал шейдеры воды, помогите разобраться...

//CompilerOptions = ParentNamespace, InternalClass
 
float4x4 World       : WORLD;
float4x4 View        : VIEW;
float4x4 Projection  : PROJECTION;
 
float3 lightDirection = float3(-1, -1, -1);
float3 specularColor = float3(1, 1, 1);
float3 color = float3(0.6, 0.6, 1);
float  alpha = 1.0;
float  time  = 0.0;
 
float3 viewPoint     : VIEWPOINT;
 
float specularIntensity = 1.0;
float specularPower = 80;
 
texture EnvironmentMap;
sampler environmentSampler = sampler_state
{
    Texture = (EnvironmentMap);
    MAGFILTER = LINEAR;
    MINFILTER = LINEAR;
    MIPFILTER = LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};
 
texture NormalMap;
sampler normalSampler = sampler_state
{
    Texture = (NormalMap);
    MagFilter = LINEAR;
    MinFilter = LINEAR;
    Mipfilter = LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};
 
struct VertexShaderInput
{
	float4 Position      : POSITION0;
	float2 TexCoord   : TEXCOORD0;
	float3 Binormal     : BINORMAL0;
	float3 Normal	      : NORMAL0;
	float3 Tangent      : TANGENT0;
};
 
struct VertexShaderOutput
{
	float4 Position      : POSITION0;
	float2 TexCoord   : TEXCOORD0;
	float3 tgtLightDir  : TEXCOORD1;
	float3 tgtEyeDir    : TEXCOORD2;
	float3 pos           : TEXCOORD3;
};
 
VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
{
    VertexShaderOutput output;
 
	float4 pos = mul(input.Position, World);
 
	float3 viewDirection  = pos - viewPoint;
 
	pos = mul(pos, View);
	pos = mul(pos, Projection);
 
	float3x3 tgtSpace;
	tgtSpace[0] = mul(normalize(input.Tangent), World);
	tgtSpace[1] = mul(normalize(input.Binormal), World);
	tgtSpace[2] = mul(normalize(input.Normal), World);
 
	output.Position    = pos;
	output.TexCoord    = input.TexCoord + time;
	output.tgtLightDir = normalize(mul(tgtSpace, -lightDirection));
	output.tgtEyeDir   = normalize(mul(tgtSpace, viewDirection));
	output.pos = pos;
	return output;
}
 
float4 PixelShaderFunctionNoSpecular(VertexShaderOutput input): COLOR0
{	
	float3 normal = 2 * tex2D (normalSampler, input.TexCoord) - 1.0;
 
	float3 ref = reflect(input.tgtEyeDir, normal);
 
	float3 envColor = texCUBE(environmentSampler, ref.xzy);
 
	float  diffuse = saturate(dot(normal, -input.tgtLightDir));	
 
	float3 halfVector = normalize(-input.tgtLightDir + input.tgtEyeDir);
 
	float specular = specularIntensity * pow(dot(normal, halfVector), specularPower) ;
 
	return float4( color * diffuse + envColor + specular, alpha);
}
 
 
technique WaterRenderTechnique
{
    pass Pass1
    {
        VertexShader = compile vs_2_0 VertexShaderFunction();
        PixelShader = compile ps_2_0 PixelShaderFunctionNoSpecular();
    }
}
Скрины работы текущего шейдера вот тут
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 09.10.2009, 15:46   #5
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Ответ: XNA + Водичка

float3 viewDirection  = pos - viewPoint;
Можешь попробовать нормализовать viewDirection.
(Offline)
 
Ответить с цитированием
Старый 09.10.2009, 19:28   #6
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: XNA + Водичка

Пробовал, получается другой эффект, тоже неверный
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Растягиваем боди. Данил Проекты на BlitzMax 6 20.11.2009 04:55
Водичка Render Алгоритмика 7 01.01.2007 14:09
Водичка . Conan Fedr 3D-программирование 16 24.02.2006 17:33


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


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