Unity3d 获取屏幕depth与normal

Depth

获取Depth的几种方法,分别有不同效果

1.

<span style="font-size:14px;">			float2 depth_uv = float2(i.uv_MainTex.x, 1-i.uv_MainTex.y);
			float d = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, depth_uv);</span>

2.

<span style="font-size:14px;">				float zx = SAMPLE_DEPTH_TEXTURE_LOD(_CameraDepthTexture, float4(depth_uv, 0, 0));
				zx = Linear01Depth(zx);</span>

3.

<span style="font-size:14px;">		v2f vert(appdata_full v) {
			v2f o;
			o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
                        o.screen = ComputeScreenPos(o.pos);
                        COMPUTE_EYEDEPTH(o.screen.z);
			o.uv_MainTex = TRANSFORM_TEX(v.texcoord, _MainTex);
			return o;
		}</span>
<span style="font-size:14px;">			float d2 = SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.screen));
			d2 = LinearEyeDepth(d2);</span>

4.

<span style="font-size:14px;">			float3 normalValues;
			float depthValue;
			DecodeDepthNormal(tex2D(_CameraDepthNormalsTexture, i.screen.xy), depthValue, normalValues);</span>

CameraDepthNormalsTexture没有显示,不知道是代码有问题还是unity有问题,unity4与5都试了,都没有值。

CameraDepthNormalsTexture  可以获取Normals和Depth

Normal

<span style="font-size:14px;">tex2D(_CameraNormalsTexture, i.uv_MainTex);</span>

                                      ---- by wolf96 http://blog.csdn.net/wolf96

时间: 2024-10-29 19:12:16

Unity3d 获取屏幕depth与normal的相关文章

WPF获取屏幕分辨率

转自:http://blog.csdn.net/w8666666/article/details/8190002 double x = SystemParameters.WorkArea.Width;//得到屏幕工作区域宽度double y = SystemParameters.WorkArea.Height;//得到屏幕工作区域高度double x1= SystemParameters.PrimaryScreenWidth;//得到屏幕整体宽度double y1 = SystemParamet

WPFの获取屏幕分辨率并自适应

原文:WPFの获取屏幕分辨率并自适应 double x = SystemParameters.WorkArea.Width;//得到屏幕工作区域宽度 double y = SystemParameters.WorkArea.Height;//得到屏幕工作区域高度 double x1= SystemParameters.PrimaryScreenWidth;//得到屏幕整体宽度 double y1 = SystemParameters.PrimaryScreenHeight;//得到屏幕整体高度

cocos2d-x JS 获取屏幕大小或中点

以一张背景图为例: var HelloWorldLayer = cc.Layer.extend({ ctor:function () { this._super(); var bg = new cc.Sprite(res.HelloWorld_png); var size = cc.director.getWinSize();//获取屏幕大小 bg.x = size.width / 2; // x轴/2即为x轴中点 bg.y = size.height / 2; // y轴/2即为y轴中点 th

C#获取屏幕鼠标所指点的颜色

有时候要获取屏幕某一点的坐标颜色值,可以如下实现: 在VS2012中创建一个C#的Windows窗口应用程序,然后在Form上添加PictureBox和Button两个控件,并加入以下代码. //需要这个命名空间: //using System.Runtime.InteropServices; [DllImport("user32.dll")]//取设备场景 private static extern IntPtr GetDC(IntPtr hwnd);//返回设备场景句柄 [DllI

ios 获取屏幕的属性和宽度

1.app尺寸,去掉状态栏 CGRect r = [ UIScreen mainScreen ].applicationFrame; r=0,20,320,460 另外:self.view.bounds.size 2.屏幕尺寸 CGRect rx = [ UIScreen mainScreen ].bounds; r=0,0,320,480 3.状态栏尺寸 CGRect rect; rect = [[UIApplication sharedApplication] statusBarFrame]

javascript获取屏幕的可用宽度和高度

说明 获取屏幕的可用宽度和高度 示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>显示浏览器窗口的高度和宽度</title> <link rel="styleshee

Android分享笔记(1) 获取屏幕尺寸,包括状态栏

一大波干货来袭,屏幕尺寸各种获得,状态栏尺寸可正确获得,亲测. package com.elyar.app.util.measure; import java.lang.reflect.Field; import android.app.Activity; import android.util.DisplayMetrics; public class DisplayMeasure {  /**   * Note:个人经验不服来辩<br>   * 只有activity可以使用getWindow

wift - 使用UIScreen类获取屏幕大小尺寸

UISreen类代表了屏幕,开发中一般用来获取屏幕相关的属性,例如获取屏幕的大小. 1 2 3 4 5 6 7 //获取屏幕大小 var screenBounds:CGRect = UIScreen.mainScreen().bounds println(screenBounds) //iPhone6输出:(0.0,0.0,375.0,667.0) //获取屏幕大小(不包括状态栏高度) var viewBounds:CGRect = UIScreen.mainScreen().applicati

Android获取屏幕尺寸

有些时候,我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现.下面就介绍讲一讲如何获取屏幕的物理尺寸:从网上找过不少资料,发现获取屏幕尺寸并不是很复杂的编程操作,下面的代码即可获取屏幕的尺寸.在一个Activity的onCreate方法中,写入如下代码: DisplayMetrics metric = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metric)