Показать сообщение отдельно
Старый 19.12.2011, 00:57   #2
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нормаль-карта для текстуры


Причем тут рельеф, если ткань имитировать нужно?
Там вуду в шейдере должно быть с затенением связанное.
float4 main(float3 pos: TEXCOORD0, float3 normal: TEXCOORD1, float3 viewVec: TEXCOORD2) : COLOR {
   // Signed noise
   float noisy = 2 * tex3D(Texture, pos).r - 1;

   // Create the pattern
   float patt = 0;
   float freq = 1.47;
   float scale = 0.5;
   for (int i = 1; i < 6; i++){
      patt += pattern(pos + noiseScale * noisy, freq) * scale;
      freq *= 2;
      scale *= 0.7;
   }

   // Apply some fabric style lighting
//******************************************
   float diffuse = 0.5 * (1 + dot(normal, lightDir));
   float cosView = clamp(dot(normalize(viewVec), normal), 0.0, 1.0);
   float shine = pow(1.0 - cosView * cosView, furriness);
//******************************************
   return (patt * color + sheen * shine) * diffuse;
}
(Offline)
 
Ответить с цитированием