Показать сообщение отдельно
Старый 27.04.2014, 00:30   #110
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

А вот еще. Заменяет зеленые оттенки на синие.
static float4 Colorka : COLOR0;
static float Bconst: COLOR1;
texture diffuseTexture : TEXTURE_0;

sampler diffuseSampler = sampler_state
{
	Texture = <diffuseTexture>;
	AddressU = WRAP;
	AddressV = WRAP;
	AddressW = WRAP;
	MinFilter = ANISOTROPIC;
	MagFilter = ANISOTROPIC;
	MipFilter = ANISOTROPIC;
	MaxAnisotropy = 4;
};

struct PSInput 
{
	float2 texCoords : TEXCOORD0; 
};

struct PSOutput 
{
	float4 color : COLOR; 
};

PSOutput PSMain (PSInput input)
{
	PSOutput output;
	Colorka = tex2D(diffuseSampler, input.texCoords).rgba;
	Bconst = Colorka.b;
	Colorka.b = Colorka.g;
	Colorka.g = Bconst;
	output.color.rgba = Colorka;
	return output;
}

technique MainTechnique
{
	pass p
	{
		PixelShader	= compile ps_2_0 PSMain();
	}
}
А можно сделать так? Спроектировать от нормали по оси У вверх вектор, который проверит пересекает вектор какую либо полигон. Если да, то закрасить пиксель в тень.

Последний раз редактировалось Izunad, 27.04.2014 в 14:03.
(Offline)
 
Ответить с цитированием