nature Bark + Bump

Speed Tree : Terrain & Trees.

nature Bark + Bump

Сообщение Neodrop 19 май 2009, 07:54

Может кто из шейдер-гуру, напишет шейдер, для отображения к примеру, бампед-спекуляр на деревьях? :-?
Очччень бы пригодилось...
К сожалению, я валенок в шейдерах. Хотя понимаю, что вроде, это не сложная задача.... Странно, что она сразу не реализована. Или я не прав?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: nature Bark + Bump

Сообщение Const_47 19 май 2009, 12:31

Ок. Но после работы.
Потому что разрабам было в лом думать как просчитать бамп с неосвещенной стороны поверхности.
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: nature Bark + Bump

Сообщение Const_47 19 май 2009, 21:43

Тупо приклеить к nature Bark bumpedSpecular не получилось. Поэтому наваял свой вариант. Отчасти спизд..одолжил у стандартных шейдеров куски кода некоторые идеи. Количество проходов = Количество источников directlight + 1;
Код: Выделить всё
Shader "AO Occlusion Bark+BumpedSpecular" {
   Properties {
   
       _Shininess ("Shininess", Range (0.03, 1)) = 0.078125

      _MainTex ("Colormap (RGB)(A-Specular)", 2D) = "white" {  }
      _BumpMap ("Bumpmap (RGB)", 2D) = "bump" {}
      _MyCubemap ("Environment", CUBE) = "" {}

      
      _BaseLight ("BaseLight", range (0, 1)) = 0.35
      _Color ("Amb.Occlusion", Color) = (1,1,1,0)
      _Scale ("Scale", Vector) = (1,1,1,1)
   }
   
   SubShader {
         Tags {
         "BillboardShader" = "Hidden/TerrainEngine/Soft Occlusion Bark rendertex"
         "TerrainCustomLit" = "Hidden/TerrainEngine/Soft Occlusion Bark customLit"
      }

      Pass {
      
             Tags { "LightMode" = "Pixel" }
   
         CGPROGRAM
         
            #pragma vertex vert
         #pragma fragment frag
         #pragma multi_compile_builtin
         #pragma fragmentoption ARB_fog_exp2
            #pragma fragmentoption ARB_precision_hint_fastest
         
            #include "UnityCG.cginc"
   
    uniform float4 _Scale;
    uniform float4x4 _TerrainEngineBendTree;
   
    uniform float4 _MainTex_ST, _BumpMap_ST;
   
    sampler2D _MainTex;
    sampler2D _BumpMap;
     samplerCUBE _MyCubemap;
   
       struct appdata {
      
   float4 vertex : POSITION;
    float4 tangent : TANGENT;
    float3 normal : NORMAL;
    float4 color : COLOR;
    float2 texcoord : TEXCOORD0;
    };

            struct v2f {
   
   float4 pos : POSITION;
   float fog : FOGC;
   float2 uv : TEXCOORD0;
   float2 uv2 : TEXCOORD1;
   float3   TtoW0    : TEXCOORD3;
   float3   TtoW1   : TEXCOORD4;
   float3   TtoW2   : TEXCOORD5;

    };
   
   
   
   v2f vert(appdata v) {
   v2f o;
   
   float4 vertex = v.vertex * _Scale;
   float4 bent = mul(_TerrainEngineBendTree, vertex);
   vertex = lerp(vertex, bent, v.color.w);
   vertex.w = 1;
   o.pos = mul(glstate.matrix.mvp, vertex);
   
   o.fog = o.pos.z;
   
   o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
   o.uv2 = TRANSFORM_TEX(v.texcoord,_BumpMap);
   
   TANGENT_SPACE_ROTATION;
   o.TtoW0 = mul(rotation, _Object2World[0].xyz);
   o.TtoW1 = mul(rotation, _Object2World[1].xyz);
   o.TtoW2 = mul(rotation, _Object2World[2].xyz);
   
   return o;
   }
   
   float4 frag (v2f i) : COLOR
    {

       float4 texcol = tex2D( _MainTex, i.uv);
       float3 normal = tex2D(_BumpMap, i.uv2).xyz * 2.0 - 1.0;
      
          half3 wn;
        wn.x = dot(i.TtoW0, normal.xyz);
        wn.y = dot(i.TtoW1, normal.xyz);
        wn.z = dot(i.TtoW2, normal.xyz);
   
       float4 Environment = texCUBE(_MyCubemap,wn);
      
         float4 result = texcol*(_PPLAmbient*Environment)*2;   
          
       return  result;   
   }
         ENDCG
      }
      

   Pass{
   Name "PPL"   
         
        Blend AppSrcAdd AppDstAdd
         
         
         Tags { "LightMode" = "Pixel" }
      
       CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_builtin
#pragma fragmentoption ARB_fog_exp2
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
#include "AutoLight.cginc"


uniform sampler2D _BumpMap;
uniform sampler2D _MainTex;

uniform float  _BaseLight;
uniform float4 _Scale;
uniform float4x4 _TerrainEngineBendTree;

uniform float4 _MainTex_ST, _BumpMap_ST;
uniform float _Shininess;

struct appdata {
      
    float4 vertex : POSITION;
   float4 tangent : TANGENT;
    float3 normal : NORMAL;
    float4 color : COLOR;
    float2 texcoord : TEXCOORD0;
   
};

struct v2f {
   V2F_POS_FOG;
   LIGHTING_COORDS
   float3   uvK;
   float2   uv2;
   float3   viewDirT;
   float3   lightDirT;
};

v2f vert (appdata v)
{   
   v2f o;
   
   float4 vertex = v.vertex * _Scale;
   float4 bent = mul(_TerrainEngineBendTree, vertex);
   vertex = lerp(vertex, bent, v.color.w);
   vertex.w = 1;
   o.pos = mul(glstate.matrix.mvp, vertex);
   
   o.fog = o.pos.z;
   
   o.uvK.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
   o.uvK.z = _Shininess * 128;
   o.uv2 = TRANSFORM_TEX(v.texcoord, _BumpMap);

   TANGENT_SPACE_ROTATION;
   o.lightDirT = mul( rotation, ObjSpaceLightDir( v.vertex ) );   
   o.viewDirT = mul( rotation, ObjSpaceViewDir( v.vertex ) );   

   TRANSFER_VERTEX_TO_FRAGMENT(o);   
   return o;
}


float4 frag (v2f i) : COLOR
{      
   float4 texcol = tex2D( _MainTex, i.uvK.xy );
   
   // get normal from the normal map
   float3 normal = tex2D(_BumpMap, i.uv2).xyz * 2.0 - 1.0;
   half4 c = SpecularLight( i.lightDirT, i.viewDirT, normal, texcol, i.uvK.z, LIGHT_ATTENUATION(i) );
   return c*_BaseLight;
}
ENDCG 
      }
      
   }
   
      SubShader {
      Tags {
         "BillboardShader" = "Hidden/TerrainEngine/Soft Occlusion Bark rendertex"
         "TerrainCustomLit" = "Hidden/TerrainEngine/Soft Occlusion Bark customLit"
      }
      Pass {
         Lighting On
         Material {
            Diffuse [_Color]
            Ambient [_Color]
         }
         SetTexture [_MainTex] { combine primary * texture DOUBLE, constant }
      }      
   }
   
   Fallback Off
   }




Вот сценка
Sharemania.ru
http://www.sharemania.ru/0243978

Рапида
http://rapidshare.com/files/234898464/N ... t.zip.html
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: nature Bark + Bump

Сообщение Neodrop 19 май 2009, 22:28

Конст, ну СУПЕР просто! ^:)^ МегаУберМоск!
(3A4OT)
Сейчас демку сюда закину...
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: nature Bark + Bump

Сообщение Neodrop 19 май 2009, 22:36

Осталось только на деревьях проверить...

HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=ftp://ftp.unity3d.ru/Upload/Compositions/bumped_occlusion_bark.unity3d&w=640&h=480&t=true&preview=1' height='"+(480+30)+"' width='640' frameborder='0' scrolling='no'></iframe>"); </script>
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: nature Bark + Bump

Сообщение gnoblin 20 май 2009, 00:39

Красота :ymdaydream: .
Надо автору звание shader-hero что-ли присвоить.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: nature Bark + Bump

Сообщение fox 20 май 2009, 09:51

круто!
Добавить foxumkov в Skype
Мои проекты:
Turbodrive
Изображение

Изображение
Аватара пользователя
fox
UNITрон
 
Сообщения: 255
Зарегистрирован: 07 ноя 2008, 13:02
Откуда: Питер
  • ICQ

Re: nature Bark + Bump

Сообщение toni_3d 20 май 2009, 12:06

а для непросвященных объясните что там такого крутого?
toni_3d
UNIт
 
Сообщения: 126
Зарегистрирован: 09 апр 2009, 06:48

Re: nature Bark + Bump

Сообщение Neodrop 20 май 2009, 12:09

Читайте ПЕРВЫЙ ПОСТ, "непросвящённый".
Если вы делали террейны, поймёте. Если нет, то и не парьтесь. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: nature Bark + Bump

Сообщение wild_r 22 май 2009, 09:35

Можно скрин светящегося дерева?
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: nature Bark + Bump

Сообщение Neodrop 22 май 2009, 11:10

Лопату в руки и копайте.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: nature Bark + Bump

Сообщение Скромняга 18 янв 2011, 21:25

Upgrade Note: SubShader commented out; uses Unity 2.x per-pixel lighting. You should rewrite shader into a Surface Shader. at line 20
Есть вариант под 3.1??
Скромняга
UNIт
 
Сообщения: 57
Зарегистрирован: 19 дек 2010, 20:51


Вернуться в Земля и деревья.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2