如何用RT实现动态的阴影。(记录一下,还有些bug要解决。)
2016-05-29 19:30
288 查看
老习惯:只贴关键部分代码,我平时不太喜欢伸手党。一些东西还要大家思考。
有什么补充希望大家能够回复;
v2f vert (appdata v)
{
v2f o;
float4x4 dis=mul(_World2Object,_shadowprojmatri);
float4 pos = mul(dis,v.vertex);
pos.xyz/=pos.w;
o.uv2=float2(pos.x,pos.y);
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.depth=o.vertex.zw;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
i.uv2.y=0-i.uv2.y;
fixed4 col = tex2D(_MainTex,i.uv);
fixed4 col1 = tex2D(_ShadowMap,(i.uv2*0.5)+0.5);
return col*(1-col1.a);
}
主要是从脚本传一个阴影相机的vp矩阵。然后把阴影相机的rt传过来。
遇到的问题是:阴影穿透问题。不知道有什么有好的方法能够解决。希望有大神给点帮助。
有什么补充希望大家能够回复;
v2f vert (appdata v)
{
v2f o;
float4x4 dis=mul(_World2Object,_shadowprojmatri);
float4 pos = mul(dis,v.vertex);
pos.xyz/=pos.w;
o.uv2=float2(pos.x,pos.y);
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.depth=o.vertex.zw;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
i.uv2.y=0-i.uv2.y;
fixed4 col = tex2D(_MainTex,i.uv);
fixed4 col1 = tex2D(_ShadowMap,(i.uv2*0.5)+0.5);
return col*(1-col1.a);
}
主要是从脚本传一个阴影相机的vp矩阵。然后把阴影相机的rt传过来。
遇到的问题是:阴影穿透问题。不知道有什么有好的方法能够解决。希望有大神给点帮助。
相关文章推荐
- unity实现多点触控代码
- 在Unity中实现动画的正反播放代码
- Unity UGUI教程之实现滑页效果
- unity实现摄像头跟随
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- [软件资讯]Unity已支持将3D游戏导出成Flash
- ShaderLab: Pass
- 手机游戏繁荣时代,移动创业团队的N条死路
- Unity 武器拖尾效果
- unity常见问题之20题
- Unity3D动画存储插件
- unity 赛车相机跟随物体移动
- uLua中遇到的问题
- Unity3d 协程、调用函数、委托
- Unity3d摄像机Camera参数详解
- Unity3d多线程