|
Xors3D Графический движок с поддержкой DirectX9 |
04.06.2010, 17:43
|
#1
|
Нуждающийся
Регистрация: 06.02.2010
Адрес: Ижевск, Удмуртия, РФ
Сообщений: 78
Написано 19 полезных сообщений (для 54 пользователей)
|
Xors3D и вода
Привет
Искал по сайтам Xors3D инфу про воду, нашел лишь нерабочую ссылку на исходник Xors3D для PureBasic.
Помогите нубу примером создания воды на Xors3D с шейдерами
__________________
Активный, общительный, адекватный, вежливый, терпеливый, немножко ленивый, креативный оригинал
|
(Offline)
|
|
04.06.2010, 19:48
|
#2
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Xors3D и вода
А пример Island не помогает? Я от туда брал воду, работало вроде раньше...
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
05.06.2010, 08:44
|
#3
|
Нуждающийся
Регистрация: 06.02.2010
Адрес: Ижевск, Удмуртия, РФ
Сообщений: 78
Написано 19 полезных сообщений (для 54 пользователей)
|
Ответ: Xors3D и вода
неужели никто воду с шейдерами не знает как сделать ?!
__________________
Активный, общительный, адекватный, вежливый, терпеливый, немножко ленивый, креативный оригинал
|
(Offline)
|
|
05.06.2010, 10:29
|
#4
|
|
Ответ: Xors3D и вода
gforcer18
бери любой пример для hlsl, причем тут xors3d ?
|
|
|
05.06.2010, 15:07
|
#5
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Xors3D и вода
Почему все думают, что шейдеры такие волшебные?
Ими тут разве что наложение текстуры да искажения можно сделать, остальное всё как обычно (в т.ч. и генерация текстуры отражения, начни вот с неё)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
05.06.2010, 15:18
|
#6
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: Xors3D и вода
Сообщение от ABTOMAT
Почему все думают, что шейдеры такие волшебные?
|
Наверное потому, что так и есть )
Когда впервые засядишь за шейдеры и начинаешь въезжать в их работу - приходит неописуемая радость )
+
http://forum.boolean.name/showpost.p...&postcount=970
+
+
+ Вот вчера сделал шейдер PostProcess Contrast (на скрине полная мощность 1.0, но вообще в двиге 0.15)
Автору поможет демка Island(В примерах ксорса), только знай, что в той деме есть места где стоит оптимизировать. Например, вместо рендера мира второй раз стоит задуматься а не лучше ли скопировать содержимое буффера...
Вот вода у меня:
|
(Offline)
|
|
Эти 9 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
|
|
06.06.2010, 05:37
|
#7
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Xors3D и вода
Наверное потому, что так и есть )
Когда впервые засядишь за шейдеры и начинаешь въезжать в их работу - приходит неописуемая радость )
|
А то я не писал.
Просто блин народ думает, что всегда найдётся волшебный шейдер, который за них игру сделает.
Тут всё же придётся некоторые вещи сделать ручками.
В т.ч. рендер отражения со второй камеры.
Короче читай пост внимательней.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
06.06.2010, 16:37
|
#8
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Xors3D и вода
Делал я воду
и даже с кругами от всплесков
только выдрать ее из проекта в отдельный пример - это полдня потратить
__________________
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо tormoz за это полезное сообщение:
|
|
06.06.2010, 16:41
|
#9
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Xors3D и вода
Сообщение от ABTOMAT
А то я не писал.
Просто блин народ думает, что всегда найдётся волшебный шейдер, который за них игру сделает.
.
|
Ы
валшебный шойдер
const float4x4 MatWorldViewProj;
const float4x4 MatWorld;
float2 TexScale=float2(1.0f,1.0f);
float3 Ring[10];
const float2 OffsetF; // Offset First
const float2 OffsetS; // Offset Second
const float FallOffSoft; // FallOff Soft
const half FallOffInt; // FallOff Intensity
const float3 WaterColor; // Water Color
const half WaterInt; // Water Intensity
const float ViewSoft; // View Soft
const float Refract; // Refraction Intensity
const float Reflect; // Reflection Intensity
const float attenuat1; // Attenuation 1
const float attenuat2; // Attenuation 2
// Positions
float3 PosCamera; // Camera Position
// Other
static float2 ProjCoords;
static float3 Color;
static float4 cD;
static float3 cN;
static float3 cNRing;
static float3 cS;
static float3 cR;
static float cFV;
static float cFO;
static float koof;
static float3 nCamera;
//################## Textures ##################
const texture tDiffuse;
sampler TexDiffuse=sampler_state {
Texture = <tDiffuse>;
ADDRESSU = WRAP;
ADDRESSV = WRAP;
ADDRESSW = WRAP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
const texture tNormalW;
sampler TexNormalW=sampler_state {
Texture = <tNormalW>;
ADDRESSU = WRAP;
ADDRESSV = WRAP;
ADDRESSW = WRAP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
const texture tNormalN;
sampler TexNormalN=sampler_state {
Texture = <tNormalN>;
ADDRESSU = WRAP;
ADDRESSV = WRAP;
ADDRESSW = WRAP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
const texture tRing;
sampler TexRing=sampler_state {
Texture = <tRing>;
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
ADDRESSW = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
const texture tRingS;
sampler TexRingS=sampler_state {
Texture = <tRingS>;
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
ADDRESSW = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
const texture tRing_;
sampler TexRing_=sampler_state {
Texture = <tRing_>;
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
ADDRESSW = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
const texture tScreen;
sampler TexScreen=sampler_state {
Texture = <tScreen>;
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
ADDRESSW = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
const texture tReflection;
sampler TexReflection=sampler_state {
Texture = <tReflection>;
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
ADDRESSW = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
//############### Input VS ###############
struct svNTB_TC {
float4 Position : POSITION0;
float3 Normal : NORMAL;
float3 Tangent : TANGENT;
float3 Binormal : BINORMAL;
float2 TexCoords : TEXCOORD0;
};
//############### Output VS ##############
struct spPW_NTB_TC_TP {
float4 Position : POSITION0;
float4 pWorld : TEXCOORD0;
float3 Normal : TEXCOORD1;
float3 Tangent : TEXCOORD2;
float3 Binormal : TEXCOORD3;
float2 TexCoords : TEXCOORD4;
float3 TexProj : TEXCOORD5;
};
//################## VS ##################
void vsPV_NTB_TC_TP( in svNTB_TC IN, out spPW_NTB_TC_TP OUT ) {
OUT.Position = mul(IN.Position,MatWorldViewProj);
OUT.pWorld = mul(IN.Position,MatWorld);
OUT.Normal = normalize(mul(IN.Normal,MatWorld));
OUT.Tangent = normalize(mul(IN.Tangent,MatWorld));
OUT.Binormal = normalize(mul(IN.Binormal,MatWorld));
OUT.TexCoords = IN.TexCoords;
OUT.TexProj.x = 0.5f*(OUT.Position.w+OUT.Position.x);
OUT.TexProj.y = 0.5f*(OUT.Position.w-OUT.Position.y);
OUT.TexProj.z = OUT.Position.w;
}
//################## PS ##################
float4 psWater( in spPW_NTB_TC_TP IN ) : COLOR {
cN = tex2D(TexNormalW,IN.TexCoords/TexScale+OffsetF)*0.5f;
cN +=tex2D(TexNormalN,IN.TexCoords/TexScale+OffsetS)*0.5f;
for (int i = 0; i < 5; i++)
{
cNRing +=tex2D(TexRing,(IN.TexCoords+Ring[i].xy)/Ring[i].z)*0.05f*(1-Ring[i].z*attenuat1);
cNRing +=tex2D(TexRing_,(IN.TexCoords+Ring[i].xy)/Ring[i].z)*0.05f*(1+Ring[i].z*attenuat1);
//*(1-Ring[i].z)*(1+Ring[i].z)
}
for (int i = 5; i < 10; i++)
{
cNRing +=tex2D(TexRingS,(IN.TexCoords+Ring[i].xy)/Ring[i].z)*0.05f*(1-Ring[i].z*attenuat2);
cNRing +=tex2D(TexRing_,(IN.TexCoords+Ring[i].xy)/Ring[i].z)*0.05f*(1+Ring[i].z*attenuat2);
}
cN = cNRing*0.9+cN*0.1f;
cN = normalize(cN*2.0f-1.0f);
PosCamera = normalize(PosCamera-IN.pWorld);
ProjCoords = IN.TexProj.xy/IN.TexProj.z;
cS = tex2D(TexScreen,ProjCoords+cN.xy*Refract);
ProjCoords.y = 1.0f-ProjCoords.y;
cR = tex2D(TexReflection,ProjCoords+cN.xy*Reflect);
nCamera = normalize(float3(dot(PosCamera,IN.Tangent),
dot(PosCamera,IN.Binormal),dot(PosCamera,IN.Normal)));
cFV = pow(max(dot(cN,nCamera),0.0f),ViewSoft)*WaterInt;
cFO = pow(max(dot(cN,nCamera),0.0f),FallOffSoft)*FallOffInt;
Color = cR*(1.0f-cFV)+cS*cFV;
Color +=Color*(1.0f-cFO)*FallOffInt*WaterColor;
//Color +=Color*(1.0f-saturate(pow(cFO,0.2f)))*FallOffInt*WaterColor;
return float4(Color*0.8,1.0f);
}
//############## Technique ###############
technique Water {
pass p0 {
AlphaBlendEnable= false;
vertexshader = compile vs_3_0 vsPV_NTB_TC_TP();
pixelshader = compile ps_3_0 psWater();
}
}
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.06.2010, 13:11
|
#10
|
Оператор ЭВМ
Регистрация: 02.04.2010
Сообщений: 25
Написано 3 полезных сообщений (для 11 пользователей)
|
Ответ: Xors3D и вода
А как его в Ксорсе использовать? В DLL пихать?
|
(Offline)
|
|
25.06.2010, 13:17
|
#11
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Xors3D и вода
Сообщение от Korobtsov
А как его в Ксорсе использовать? В DLL пихать?
|
Да. ...
__________________
|
(Offline)
|
|
Эти 6 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
|
25.06.2010, 15:10
|
#12
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Xors3D и вода
на сайте ксорса должен быть баальшой тутор по шейдерам. по-крайней мере, разрабы его писали.
|
(Offline)
|
|
26.06.2010, 15:48
|
#13
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Xors3D и вода
Сообщение от Mr_F_
на сайте ксорса должен быть баальшой тутор по шейдерам. по-крайней мере, разрабы его писали.
|
Писали, переводили, всем пох на деле оказалось. А так лежит, да - http://area.xors3d.com/depository/do...first-steps-ru
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
|
|
28.06.2010, 13:12
|
#14
|
Оператор ЭВМ
Регистрация: 02.04.2010
Сообщений: 25
Написано 3 полезных сообщений (для 11 пользователей)
|
Ответ: Xors3D и вода
Можно ли запустить пример Island на xors3d 536? Или новые релизы Хорса не поддерживают старые примеры?
|
(Offline)
|
|
28.06.2010, 13:43
|
#15
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Xors3D и вода
Кнайт, чето я не могу найти пример Island на xors3d.com Алсо, примеры скачиваются, но не открываются.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:55.
|