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 ...
随机推荐
- JavaScript Date 对象的异常现象-new Date('0001-01-01 00:00:00')
Date 对象 Date 对象用于处理日期和时间. new Date() :Date 对象会自动把当前日期和时间保存为其初始值. 打开chrome的开发者工具,在Console敲下new Date() ...
- ElasticSearch安装及HEAD插件配置
1. 安装 ElasticSearch 直接下载 zip 包解压即可,假设解压到 E:\ESTool\elasticsearch-5.6.3 2. 安装 nodejs 和 npm head 插件本身是 ...
- [转]Cordova - 彻底搞定IOS编译!
本文转自:https://www.cnblogs.com/sunylat/p/9946482.html 操作系统:OSX10.14 XCode:10.1 Cordova:8.1.2 假设已经配置好了C ...
- [转]用C#在windows上操控电脑自带蓝牙(入道指南)
本文转自:https://blog.csdn.net/YSSJZ960427031/article/details/50990372 前言如题,如果你也想用C#在windows上操控电脑自带蓝牙,但是 ...
- 【转载】Sqlserver阻止保存要求重新创建表的更改
在Sqlserver创建完表table后,后续维护过程中有时候需要往表格中新增字段,在表设计窗体中新增字段后保存,有时候会直接抛出错误信息,提示“不允许保存更改,您所做的更改要求删除并重新创建以下表” ...
- eclipse项目导入之后,项目内无报错,项目头有红色叉号。
解决方法:右击项目之后选择properties,先看buildpath是不是有不一样的地方需要改成自己用的jdk与tomcat 之后看是否是项目之前用的tomcat与自己的不一样,如图 再更改过之后问 ...
- [日常] PHP库函数fgetss的BUG
1. fgetss函数php官网的解释是: (PHP 4, PHP 5, PHP 7) fgetss — 从文件指针中读取一行并过滤掉 HTML 标记 2. 测试后出现的问题是: 当文本中有一行数据 ...
- [android] 开启新的activity获取他的返回值
应用场景:打开一个新的activity,在这个activity上获取数据,返回给打开它的界面 短信发送时,可以直接选择系统联系人 界面布局是一个线性布局,里面右侧选择联系人在EditText的右上,因 ...
- Java学习笔记之——final关键字
最终的,最后的 可以修饰:变量.方法.类 (1) 修饰变量 不可改变,即常量,只能赋值一次,赋值之后不可改变 a. 修饰属性:private final int num; 要求属性要显式赋值 通常在属 ...
- idea输入法不跟随解决办法
最近使用idea开发项目,遇到输入法不跟随的问题,自己动手解决了下 idea输入法不跟随解决办法: 1):系统:windows10 版本:idea2017.2 解决办法:使用QQ输入法 2):系统:w ...