Создал тему на оф форуме
http://forum.unity3d.com/viewtopic.php?p=267347#267347
Поидее этого можно избежать, заставив юнити рендерить модельку в самом конце, через Tags {"Queue" = "Transparent"}, но этот тег видимо неработает.
SubShader
{
Tags {"Queue" = "Transparent" "RenderType" = "Transparent"}
Pass
{
Blend SrcAlpha OneMinusSrcAlpha
Shader "Fur"
{
Properties
{
_FurLength ("Fur Length", float) = .25
_MainTex ("Base (RGB)", 2D) = "white" { }
_Cutoff ("Alpha Cutoff", float) = .0001
_EdgeFade ("Edge Fade", float) = 0.4
_LightDirection0 ("Light Direction 0, Ambient", Vector) = (1,0,0,1)
_MyLightColor0 ("Light Color 0", Color) = (1,1,1,1)
_LightDirection1 ("Light Direction 1, Ambient", Vector) = (1,0,0,1)
_MyLightColor1 ("Light Color 1", Color) = (1,1,1,1)
}
Category
{
ZWrite On
//ZTest Less
Cull back
Tags {"Queue" = "Transparent"}
Blend SrcAlpha OneMinusSrcAlpha
Alphatest Greater [_Cutoff]
SubShader
{
Pass
{
//ZWrite On
//Blend Off
//Cull back
CGPROGRAM
// vertex VertexProgram
#define FUR_MULTIPLIER 0.0
#include "FurHelpers.cginc"
ENDCG
SetTexture [_MainTex]
{
constantColor(1,1,1,1)
combine texture * primary double, constant
}
}
Pass
{
//ZWrite On
//Cull back
CGPROGRAM
// vertex VertexProgram
#define FUR_MULTIPLIER 0.1
#include "FurHelpers.cginc"
ENDCG
SetTexture [_MainTex]
{
combine texture * primary double, texture * primary
}
}
Pass
{
//ZWrite On
//Cull back
CGPROGRAM
// vertex VertexProgram
#define FUR_MULTIPLIER 0.2
#include "FurHelpers.cginc"
ENDCG
SetTexture [_MainTex]
{
combine texture * primary double, texture * primary
}
}
Pass
{
//ZWrite On
//Cull back
CGPROGRAM
// vertex VertexProgram
#define FUR_MULTIPLIER 0.3
#include "FurHelpers.cginc"
ENDCG
SetTexture [_MainTex]
{
combine texture * primary double, texture * primary
}
}
}
Fallback " VertexLit", 1
}
}
#ifndef FUR_HELPERS_INCLUDED
#define FUR_HELPERS_INCLUDED
#include "UnityCG.cginc"
struct v2f {
V2F_POS_FOG;
float4 color : COLOR0;
float4 uv : TEXCOORD0;
};
uniform float _FurLength;
uniform float _EdgeFade;
uniform float4 _LightDirection0;
uniform float4 _MyLightColor0;
uniform float4 _LightDirection1;
uniform float4 _MyLightColor1;
sampler2D _MainTex : register(s0);
void FurVertexPass(float multiplier, appdata_base v, float furLength,
out float4 pos, out float fog, out float4 color, out float4 uv)
{
// extrude position
float4 wpos = v.vertex;
wpos.xyz += v.normal * furLength * multiplier;
pos = mul(glstate.matrix.mvp, wpos);
// fog
fog = pos.w;
// UV (pass through to save instr - loses tiling/offset though)
uv = mul( glstate.matrix.texture[0], v.texcoord );
// edge fade out
float alpha = 1 - (multiplier * multiplier);
// transform normal into eye space and use Z component
// to control the fade
float3 eyeNormal = mul((float3x3)glstate.matrix.modelview[0],
v.normal);
alpha += saturate(eyeNormal.z) - _EdgeFade;
// lighting
float3 normalWorld = mul ((float3x3)_Object2World, v.normal);
float light0 = clamp(dot(normalWorld, _LightDirection0.xyz),
_MyLightColor0.w, 1);
float light1 = clamp(dot(normalWorld, _LightDirection1.xyz),
_MyLightColor1.w, 1);
color = float4((light0 * _MyLightColor0).xyz +
(light1 * _MyLightColor1).xyz,alpha);
}
v2f VertexProgram (appdata_base v)
{
v2f o;
FurVertexPass( FUR_MULTIPLIER, v, _FurLength, o.pos, o.fog, o.color, o.uv );
return o;
}
#endif
Pass
{...}
Pass
{...}
Pass
{...}
Pass
{...}
Pass
{...}
Pass
{...}
Pass
{...}
Pass
{...}
gerasim писал(а):Непонятно зачем вапще края размывать. Ну будет контур угловатый для лоуполи. Тогдауж сделать модель на 2Ктрис вместо 500 - будет более сглажено. Если нормадмапой типа шерсти покрыть лоуполи - там и не видать краёв)
Вот модель на 460трисов, ноги крючит потомушто он прыгает как кошка, с несвоей анимацыей.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2