Unity Shader
文章平均质量分 87
九本才
一只来自济南的程序猿
展开
-
Unity Shader 动画
Unity Shader中的内置变量(时间)动画效果往往都是把时间添加到一些变量的计算中,以便在时间变换时画面也可以随之变化。Unity Shader提供了一系列关于时间的内置变量来允许我们方便在Shader中访问运行时间,实现各种动画效果。纹理动画纹理动画在游戏中的应用非常广泛。尤其在各种资源都比较局限的移动平台上,我们往往会使用纹理动画来代替复杂的粒子系统等模拟各种动画效果。序列帧动画最常见的纹理动画之一就是序列帧动画。序列帧动画的原理非常简单,它像是放电影一样,依次播放一系列关原创 2022-03-16 10:33:43 · 3454 阅读 · 0 评论 -
Unity 高级纹理
立方体纹理在图形学中,立方体纹理是环境映射的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了一层金属一样反射出周围的环境。和之前的纹理不同,立方体纹理一共包含6张图像,这些图像对应了一个立方体的6个面,立方体纹理的名称也由此而来。立方体的每个面表示沿着世界空间下的轴向(上下左右前后)观察所得的图像。对于立方体纹理采样我们需要提供一个三维的纹理坐标,这个三维纹理坐标表示我们世界空间下的一个3D方向。这个方向矢量从立方体的中心出发,当它向外部延伸时就会和立方体的6个纹原创 2022-03-04 09:45:31 · 2213 阅读 · 0 评论 -
Unity 更复杂的光照
Unity 的渲染路径在Unity里,渲染路径决定了光照是如何应用到Unity Shader中的。因此,如果要和光源打交道,我们需要为每一个Pass指定她使用的渲染路径,只有这样才能让Unity知道想要那种的渲染路径,我们吧光源和后处理的光照都放在这些数据里,就可以访问了。也就是说,我们只有为Shader正确地选择和设置需要了需要的渲染路径,该Shader的光照计算才能被正确的执行。Unity支持多种类型的渲染路径主要有三种:向前渲染路径,延迟渲染路径,和顶点照明渲染路径。之后的版本中顶点渲染路径已原创 2022-02-24 11:44:25 · 1005 阅读 · 0 评论 -
Unity Shader透明效果
在实时渲染中要实现透明效果,通常会在渲染模型时控制他的透明通道。当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元除了颜色值和深度值之外,它还有另一个属性——透明度。当透明度为1时表示该像素是完全不透明的,当为0时,则表示像素完全不会显示。在unity中,我们通常使用两种方法来实现透明效果:第一种是使用透明度测试,这种方法其实无法得到真正的半透明效果;另一种就是透明度混合。对于不透明物体,不考虑他们的渲染顺序也能得到正确的排序效果,这是由于强大的深度缓冲的存在。在实时渲染中,深度缓冲是用于解决可原创 2022-02-16 17:16:54 · 8934 阅读 · 0 评论 -
Unity Shader 基础纹理
纹理最初的目的就是使用一张图片来控制模型的外观。使用纹理映射技术,我们可以把一张图片黏在模型表面,逐纹素地控制模型的颜色。这里简单的总结一下单张纹理,凹凸映射,渐变纹理,遮罩纹理。单张纹理 Properties { _Color ("Color Tint", Color) = (1, 1, 1, 1) _MainTex ("Main Tex", 2D) = "white" {} _Specular ("Specular", Color) = (1, 1, 1, 1) _Gl原创 2022-02-09 16:20:00 · 1014 阅读 · 0 评论 -
Unity 中的基础光照
通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑三种物理现象。首先,光线从光源中被发射出来。然后,光线和场景中的一些物体相交:一些光被物体吸收了,而另一些光被散射到其他方向。最后,摄像机吸收了一些光,产生了一张图像。光源在实时渲染中,我们通常把光源当成一个没有体积的点,用L 来表示她的方向。那么,我们如何测量一个光源发射出多少光呢?也就是说,我们如何量化光,在光学里,我们使用辐照度来量化光。对于平行光来说,他的辐照度可通过计算在垂直于L的单位面积上单位时间穿过的能量来得到。在计原创 2022-01-27 15:47:40 · 2550 阅读 · 0 评论 -
Unity Shader数学基础——坐标空间
坐标空间的变换在渲染流水线中,我们往往需要把一个点或者方向矢量从一个坐标空间转换到另一个坐标空间。要想定义一个坐标空间,必须指明其原点位置和三个坐标轴的方向。而这些数值实际上是相对于另一个坐标空间的。也就是说,坐标空间会形成一个层次结构——每个坐标空间都是另一个坐标空间的子空间,反过来说,每个空间都有一个父坐标空间。对坐标空间的变换实际上就是在父坐标空间和子空间之间对点和矢量进行变换。当给定一个坐标空间以及其中一个点(a,b,c)时我们是如何知道该点的位置的呢?我们可以通过4个步骤来确定它的位置原创 2022-01-19 16:06:10 · 2515 阅读 · 1 评论 -
Unity Shader数学基础——矩阵
矩阵的定义由m×n个数a,排成的m行n列的数表称为m行n列的矩阵,简称m×n矩阵。记作:这m×n个数称为矩阵A的元素,简称为元,数a位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数a为(i,j)元的矩阵可记为(a)或(a)m×n,m×n矩阵A也记作Amn。元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。矩阵基本运算加法矩阵的加法满足下列运算律(A,B,C都是同型矩阵):应该注意的是只有同..原创 2022-01-18 14:11:13 · 2973 阅读 · 1 评论 -
Unity Shader数学基础——笛卡尔坐标,点,矢量
笛卡尔坐标系在游戏制作中我们使用数学绝大部分都是为了计算位置,距离和角度等变量。这些计算大部分都是在笛卡尔坐标系下进行的。二维笛卡尔坐标系一个二维笛卡尔坐标系包含两个部分的信息:一个特殊的位置,即原点,他是整个坐标系的中心。 两条通过原点的相互垂直的矢量,即X轴和Y轴这些坐标轴也被成为该坐标的基矢量。三维笛卡尔坐标系在三维笛卡尔坐标系中,我们需要定义3个坐标轴和一个原点。这三个轴也被称为该坐标的基矢量。通常情况下,这三个坐标轴之间是相互垂直的而且长度为1,这样的矢量也被称.原创 2022-01-17 14:11:17 · 2889 阅读 · 0 评论 -
Unity Shader基础
ShaderLab在unity中,所有的unity shader都是使用shaderlab来编写的。Shaderlab是unity提供的编写unity shader的一种说明性的语言。Unity shader的结构Shader名字每一个unity shader的第一行都是通过shader语义来指定他的名字。例如:Shader "Custom/NewSurfaceShader"材质和unity shader的桥梁:PropertiesProperties语句块中包含了一系列的属性,这些原创 2021-12-29 23:10:36 · 1742 阅读 · 0 评论 -
渲染流水线
学习Unity Shader 入门精要的笔记。什么时渲染流水线渲染流水线的任务在于由一个三维场景出发,生成一张二维图像。这个工作时CPU和GPU共同完成的。一般将渲染流水线分成三个阶段:应用阶段,几何阶段,光栅化阶段,这里仅仅是概念性阶段,每个阶段通常也是一个流水线系统。应用阶段这个阶段是我们自己主导的,因此通常由CPU负责实现。开发者有三个主要的任务:1.我们要准备好场景的数据,例如摄像机的位置,视锥体,场景中包含的模型,使用的光源等。2.为了提高渲染性能,我们需要做一个粗原创 2021-12-21 22:09:51 · 379 阅读 · 0 评论