unity3d做景深效果,懂得进来了看看啦

cdm2179 2011-08-01 06:00:41

Shader "MyShader/3-2-2" {
Properties {
_MainTex ("Base (RGB)", 2D) = "" {}
_BlurTex ("BlurTex (RGB)", 2D) = "" {}
}

SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"

struct OutPut {
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
//float2 uv2 : TEXCOORD1;
};

sampler2D _MainTex;
sampler2D _BlurTex;
float4 _BlurTex_ST;
sampler2D _CameraDepthTexture;

OutPut vert (appdata_img v)
{
OutPut o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.uv = v.texcoord.xy;
//o.uv2 = TRANSFORM_TEX (v.texcoord, _BlurTex);

return o;
}

half4 frag (OutPut o) : COLOR
{
half4 color = float4(0,0,0,0);
half4 depth = tex2D (_CameraDepthTexture, o.uv);

if(depth < 0.5)
color = tex2D(_MainTex, o.uv);
else
color = tex2D(_BlurTex, o.uv);

return color;
}
ENDCG
}
}
Fallback off
}


主要问题就是:_CameraDepthTexture(u3d自带的深度纹理图),我不知道怎么从这张图获取深度值
然后比较,如果小于0.5就用清晰的图像,如果大于0.5就用模糊的图像
其实就是根据距离摄像机的距离来进行处理
但是没有效果。。。。。。。。。。。。。。。。。。。。。
...全文
2508 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsilen 2013-09-25
  • 打赏
  • 举报
回复
float centerDepth = Linear01Depth(UNITY_SAMPLE_DEPTH(tex2D(_CameraDepthTexture, i.uv[1])));
topnations 2013-09-25
  • 打赏
  • 举报
回复
half4 center = tex2D (_CameraDepthNormalsTexture, i.uv[1]);
topnations 2013-09-25
  • 打赏
  • 举报
回复
float centerDepth = DecodeFloatRG (center.zw);
topnations 2013-09-25
  • 打赏
  • 举报
回复
应该不能用IF语句
xsilen 2013-09-25
  • 打赏
  • 举报
回复
unity有image effect 包 里面有景深效果
hustlaofan 2011-08-02
  • 打赏
  • 举报
回复
推荐 nvidia D3D9 SDK 上面有例子
hustlaofan 2011-08-02
  • 打赏
  • 举报
回复
我在用cg做景深效果,纠结的不行
cdm2179 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dizuo 的回复:]
不懂。
[/Quote]

这不是很简单的吗?
ryfdizuo 2011-08-02
  • 打赏
  • 举报
回复
不懂。
cdm2179 2011-08-02
  • 打赏
  • 举报
回复
这里说不是一样吗

没人看看吗?????????????
ytycn 2011-08-02
  • 打赏
  • 举报
回复
你的depth有问题,能加个qq吗。。。53331686

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧