ShaderLab 之 UNITY_INITIALIZE_OUTPUT】的更多相关文章

在 HLSLSupport.cginc 文件中定义了此宏: #if defined(UNITY_COMPILER_HLSL) #define UNITY_INITIALIZE_OUTPUT(type,name) name = (type)0; #else #define UNITY_INITIALIZE_OUTPUT(type,name) #endif 只有在HLSL编译器编译时,它才工作,初始化name参数,否则编译器可能会报如下错误: “Shader error in 'Jie/Test':…
Unity3D ShaderLab 静态贴图光照模型 其实在unity的光照模型中,我们可以把光照讯息烘培进入一个2D贴图,来实现着色器的光照效果. 下面是在unity中关闭灯光和打开灯光的对比效果.所以这类着色器的缺点就是不会随着光源变化效果. 接下来,我们开始创建,首先通过软件MaCrea来制作我们的2D光照贴图,MaCrea软件 通过该软件可以快速制作一个完整的发光球体平面图. 软件地址:http://pan.baidu.com/s/1bnD7wkv 软件视频教学地址:http://pan…
http://www.jianshu.com/p/7b9498e58659 Unity ShaderLab学习总结 Why Bothers? 为什么已经有ShaderForge这种可视化Shader编辑器.为什么Asset Store已经有那么多炫酷的Shader组件可下载,还是有必要学些Shader的编写? 2014-0718-1607-11-33.png 因为上面这些Shader工具/组件最终都是以Shader文件的形式而存在. 需要开发人员/技术美术有能力对Shader进行功能分析.效率评…
Unity3D ShaderLab 修改渲染队列进行深度排序 为了更深刻的理解透明度,我们还需要学习一下深度排序,简单来说就是物体被渲染的先后顺序. Unity允许我们通过代码来控制某个特定物体渲染到屏幕的顺序.这个做法类似于photoshop中图层的概念. 开始之前,准备工作还是新建Shader Material,准备测试场景.为了对比 是需要使用2个材质球的. 打开我们的shader,稍微编辑一下即可看到效果.过程简单如下: Shader "91YGame/DepthSort" {…
Unity3D ShaderLab 透明裁剪着色器 上一篇,我们介绍了使用Alpha实现透明的手法,其实Unity为我们的#pragma提供了另一种参数,是我们能做出更高效 简单的透明效果,也就是裁剪透明. 这种透明使用一个值来简单的控制某些特定的像素无需渲染到屏幕上,所以我们也可以通过他实现一个要么完全透明或完全不透的着色器. 我们即将利用灰度的值来控制材质的透明度. 准备工作还是新建Shader Material,一张灰度变化图.同样是分分钟完成的代码,请看完成: Shader "91YGa…
Unity3D ShaderLab 使用alpha参数创建透明效果 其实Unity为了方便我们的工作,为我们内置了很多参数.比如马上用到的透明功能. 准备场景新建Shader Material ,一张红绿蓝的贴图. 实现代码及其简单,直接看完成的: Shader "91YGame/AlphaTransparency" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _TransVal…
Unity3D ShaderLab布料着色器 布料着色器是我们在虚拟现实中经常使用的着色器.本篇就来完成一个较为简单的布料着色器. 新建Shader,Material,InteractiveCloth[布料].完成的代码如下 Shader "91YGame/ClothShader" { Properties { //参数; _MainTint(,,,) _BumpMap ("Normal Map", 2D) = "bump" {} _Detail…
Unity3D ShaderLab 漫反射卷积光照模型 漫反射卷积[Diffuse convolution]是一个模糊立方体的过程,它保留了立方图的整体光照强度,只模糊了细节. 这种效果在我们要活得一个更具全局光照表面效果的时候非常有用. 为了实现这种效果,我们需要创建一个卷积运算的立方图.比如ATI的工具制作CubeMapGen. 下载地址: http://developer.amd.com/tools-and-sdks/archive/legacy-cpu-gpu-tools/cubemap…
Unity3D ShaderLab 立方体图的菲涅尔反射 菲涅尔反射是反射类型中比较常见的一种类型,当我们的视线正对物体表面,那么反射量会明显增加, 我们几乎可以在任何支持反射类型的物体表面看到这种情况,我们接下来就来实现这种反射效果过. 还是先创建Shader和 Material,沿用上一节的立方体图.代码变动较少,直接看下面的完成代码: code start -------------------------------------------------------------------…
Unity3D ShaderLab立方体图的法线渲染 某些情况下,我们希望立方体图的材质球上产生法线效果,来更多的表现细节,比如菱形花纹的玻璃,冰块的表面. 在帧数的协调下,我们可以通过input结构体的另一个内置参数来传递我们的法线贴图.下面 我们就一步步实现. 首先,新建Shader,在新建材质球,准备立方体图,法线贴图.双击shader进入脚本编辑. 本次的代码修改依然是和之前的立方体图的反射遮罩差不多,所以就直接看完成的代码吧. code start ------------------…