Показать сообщение отдельно
Старый 07.11.2013, 14:34   #4
Alex_Witcher
Нуждающийся
 
Регистрация: 15.02.2012
Сообщений: 53
Написано одно полезное сообщение
Ответ: рандомное смешивание нескольких текстур

вообщем в скрипте создаю Перлин Ноиз текстуру: как тут: http://docs.unity3d.com/Documentation/S ... Noise.html
Но использовать ее в качестве маски не получится, нужно преобразовать по альфа каналу.
Преобразовываю и накладываю маску вот этим шейдером:
Shader "Custom/mask" {

Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
_Mask ("Culling Mask", 2D) = "white" {}
_BackTex ("Culling Mask", 2D) = "white" {}
_Cutoff ("Alpha cutoff", Range (0,1)) = 0.1
}
SubShader
{
Tags {"Queue"="Transparent"}
Lighting Off
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
AlphaTest GEqual [_Cutoff]

Pass
{


CGPROGRAM
// Upgrade NOTE: excluded shader from OpenGL ES 2.0 because it does not contain a surface program or both vertex and fragment programs.
#pragma exclude_renderers gles

#pragma fragment frag

#include "UnityCG.cginc"
sampler2D _Mask;
sampler2D _MainTex;
sampler2D _BackTex;
struct v2f { 

float4 pos : POSITION; 

float4 uv : TEXCOORD0; 

}; 
half4 frag (v2f i) : COLOR 

{ 

half4 color = tex2D(_Mask, i.uv.xy); 
 half4 MainTex_color = tex2D(_MainTex,i.uv.xy); 
  half4 BackTex_color = tex2D(_BackTex,i.uv.xy); 
  half mask_alpha = color.w - ( (color.b * .5) + (color.b * .5)); 
//return half4(color.r, color.g, color.b, color.g - ( (color.r * .5) + (color.b * .5)));
return half4(MainTex_color.r,MainTex_color.g, MainTex_color.b, mask_alpha);
//return half4(0,0, 0, color.w - ( (color.b * .5) + (color.b * .5)));

// return half4(color.r, color.g, color.b, color.g);



} 


ENDCG

AlphaTest Less [_Cutoff]
//SetTexture [_MainTex] {combine texture, previous}
//SetTexture [_Mask] {combine texture}
//

}
}
}
Вот что получается: https://dl.dropboxusercontent.com/u/44855747/mmm.jpg
Но текстура маски так-же отображается (серые цвета). Может кто-то подсказать: 1)как убрать отображение текстуры маски 2) как добавить например еще 1-2 текстуры и так-же по подобной маске смешивать их в этом шейдере. 3) Как смешивать эти текстуры по маскам, с применением вот этого эффекта: http://habrahabr.ru/post/180743/
__________________
unity3d, 1я поделка.
https://play.google.com/store/apps/d...GVsaWNmcmVlIl0.

Последний раз редактировалось Alex_Witcher, 07.11.2013 в 16:38.
(Offline)
 
Ответить с цитированием