Unity 琐碎(2): Shader 颜色调试
Shader的调试有点蛋疼,最近在测试Image Effect中深度还原时,不知道输出的结论是否正确,后面就采取了这种策略。在物体上世界坐标位转换区间到[0,1],然后作为颜色进行输出。然后Image Effect shader中也采用类似的方式进行输出,通过颜色进行比较。需要注意的是:颜色区间,比如将世界坐标转换到颜色空间,可以按法线的方式先归一化转换到[-1,1],再转换到[0,1]。
类似的做法可以参考《Shader入门》第五章,shader源码,并且提供了一个工具,用于颜色抓取。
Shader "Unlit/ObjectTestColor"
{
	SubShader
	{
		Tags
		{
		 	"RenderType"="Opaque"
	 	}
		LOD 100
		Pass
		{
			CGPROGRAM
			#pragma vertex object_vert
			#pragma fragment object_frag
			#include "UnityCG.cginc"
			struct appdata
			{
				float4 vertex : POSITION;
			};
			struct v2f
			{
				float4 vertex : SV_POSITION;
				float4 clippos : TEXCOORD0;
				float4 worldPos : TEXCOORD1;
				float4 depth : TEXCOORD2;
			};
			v2f object_vert (appdata v)
			{
				v2f o;
				o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
				o.clippos = o.vertex ;
				o.depth.x = COMPUTE_DEPTH_01;
				o.worldPos =  mul(_Object2World, v.vertex);
				return o;
			}
			fixed4 object_frag (v2f i) : SV_Target
			{
				//NDC深度
				//fixed4 ndc = i.clippos / i.clippos.w ;
				//float d = ndc * 0.5 + 0.5 ;
				//return fixed4(d,d,d,1);
				//View空间深度
				//float viewdDepth = i.depth.x * 10;
				//return fixed4(viewdDepth,viewdDepth,viewdDepth,1)   ;
				//世界坐标
				float dis = length(i.worldPos.xyz);
			    float3 worldPos2 = i.worldPos.xyz/dis;
    		    worldPos2 = worldPos2 * 0.5 + 0.5;
				return fixed4(worldPos2,1);
			}
			ENDCG
		}
	}
	FallBack "Diffuse"
}
												
											Unity 琐碎(2): Shader 颜色调试的更多相关文章
- Unity 琐碎(4) 可视化辅助调试Giamos
		
Gizmos 类 可以在代码中绘制一些输出结果或者中间输出内容,比如计算后的包围盒等等 类变量 方法 作用 color 控制输出颜色 matrix Set the gizmo matrix used ...
 - 【浅墨Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法&颜色、光照与材质
		
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨) ...
 - unity之初识shader
		
自己做个总结先.当然文中很多内容都是从各位大神的文档当中看的.我只是站在巨人的肩膀上. 首先什么是shader?其实就是一个在显示屏当中的显示程序,俗称着色器.它可以定义物体在硬件显示屏当 ...
 - 【unity shaders】:Unity中的Shader及其基本框架
		
shader和Material的基本关系 Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出.绘图单元可以依据这个输出来将图 ...
 - 【Unity Shaders】Shader学习资源和Surface Shader概述
		
写在前面 写这篇文章的时候,我断断续续学习Unity Shader半年了,其实还是个门外汉.我也能体会很多童鞋那种想要学好Shader却无从下手的感觉.在这个期间,我找到一些学习Shader的教程以及 ...
 - unity 内置shader
		
几个有用的Unity 内置shader: (一)Standard RenderingMode:Opaque为实体渲染,更改Color的透明通道不会有影响:Cutout会把图片的透明通道显示出来,非严格 ...
 - unity手机游戏应用程序调试控制台Lunar Mobile Console - PRO 1.5.5
		
unity手机游戏应用程序调试控制台Lunar Mobile Console - PRO 1.5.5 High-performance Unity iOS/Android console built ...
 - Unity内置shader 下载
		
Unity内置shader 4.3.1 版本的 其他版本可以自己修改名称 下载地址 http://download.unity3d.com/download_unity/builtin_shade ...
 - js颜色调试器
		
1 /* ColorTestViewer 颜色调试器 2 3 attribute: 4 onchange: Function; //颜色改变回调; 默认null 5 6 //以下属性不建议直接修改 7 ...
 
随机推荐
- Redis 初次见面
			
目录 Redis 特性 使用场景 初次使用 安装(Linux) 配置 启动 redis 的 3 种方法 使用 redis 客户端 关闭 redis 服务 Redis 版本说明 引用 1 Redis 特 ...
 - 18.Class 的基本语法
			
Class 的基本语法 Class 的基本语法 简介 JavaScript 语言中,生成实例对象的传统方法是通过构造函数.下面是一个例子. function Point(x, y) { this.x ...
 - 业务开发(八)—— Maven
			
0x01.maven install成功后,项目旁边依然有个红叉 maven--update--选中下方Force Update of Snapsshots/Releases 0x02.An inte ...
 - 从零开始学安全(二十二)●PHP日期date参数表
			
$date=new DateTime(); echo $date->format("Y-m-d h:i:s");
 - 【Java每日一题】20170207
			
20170206问题解析请点击今日问题下方的“[Java每日一题]20170207”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...
 - Python-10行代码实现3个数据可视化
			
阅读本文约“1分钟” 最近将Python作为第二编程语言,进行了了解与学习,可以说它的包是很强大的.这次的demo仅仅不到10行代码就可以实现三个数据可视化的小实例. 我们将要使用到matplotli ...
 - React之todo-list
			
基于React的一个简单Todo-list 先赌为快:在线DEMO,感觉还不错点一下star -_- ~ 源码地址: 一.已经完成的功能 1.新增选项(默认未完成) 2.完成状态可以切换 3.当前选 ...
 - JVM-String.intern()
			
故事起源于书籍<深入理解Java虚拟机>,案例如下: public class RunTimeConstantPoolOOM { public static void main(Strin ...
 - K8S dashboard
			
kubernetes-dashboard有两种认证方式,一个token认证,另一个是Kubeconfig文件的认证.这个时候的认证不是UserAccount而是获取kubernetes集群资源信息的s ...
 - C#基础(201)--常量枚举
			
本文知识点: 1.掌握常量的定义和使用方法 2.理解枚举的作用和特点 3.掌握枚举的使用方法 1.1.常量的定义语法 const 数据类型 常量名称 = 值: 1.2.常见错误 1.3常量的 ...