вообщем в скрипте создаю Перлин Ноиз текстуру: как тут:
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/