ShaderLab
锐萌瑞
这个作者很懒,什么都没留下…
展开
-
SimpleShader
Unity Shader:说到底,Shader其实只是一段规定好输入(颜色,贴图等)和输出(渲染器能读懂的点和颜色的对应关系)的程序。那么,设计一个Shader的过程其实就是根据输入,进行计算变换从而产生输出而已。1.分类:在Unity中的Shader分为两类:表面着色器(Surface Shader):已经为我们完成了大部分的工作,只需要简单的操作即可得到不错的效果;片段着色器(Fragment...原创 2018-03-12 14:13:01 · 550 阅读 · 0 评论 -
前向渲染详解
Forward Rendering Path的渲染细节 在开始后面的讨论之前,先要弄懂一个问题就是Unity可以在Forward Rendering Path中可以处理哪些以及处理多少光照。这里只提取官方文档中的一些内容加以说明。 在Forward Rendering中,有三种处理光照(即照亮物体)的方式:逐顶点处理,逐像素处理,球谐函数(Spherical Harmonics,S...转载 2018-12-20 11:03:49 · 4087 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第15章 使用噪声
转载自 冯乐乐的 《Unity Shader 入门精要》消融效果消融效果常见于游戏中的角色死亡、地图烧毁等效果。这这些效果中,消融往往从不同的区域开始,并向看似随机的方向扩张,最后整个物体都将消失不见。我们将学习如何在Unity中实现这种效果。效果如下图所示。要实现上图中的效果,原理非常简单,概括来说就是噪声纹理+透明度测试。我们使用对噪声纹理采样的结果和某个控制消融程度的阈值比较...转载 2018-07-12 09:21:08 · 542 阅读 · 0 评论 -
猴子都能看懂的PBR(才怪)
转载自:https://zhuanlan.zhihu.com/p/33464301?utm_medium=social&utm_source=qq 也不知道怎么搞的,PBR(Physicallly-Based-Rendering 基于物理渲染)突然成了一个……你会了就好像什么都会,不会就好像什么都不会的标尺了……嘛,其实PBR也和其他渲染技术类似,虽然是比GPUSkinMesh...转载 2018-11-14 14:58:34 · 1546 阅读 · 0 评论 -
Unity全局雾
写在前面熟悉Unity的都知道,Unity可以进行基本的雾效模拟。所谓雾效,就是在远离我们视角的方向上,物体看起来像被蒙上了某种颜色(通常是灰色)。这种技术的实现实际上非常简单,就是根据物体距离摄像机的远近,来混合雾的颜色和物体本身的颜色即可。Unity里设置雾效有两种方式,一种最简单的就是直接开启全局雾效,也就是在Edit->Render Settings里配置,如下图所示:...转载 2018-10-25 19:27:28 · 1429 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第8章 透明效果
转载自 冯乐乐的 《Unity Shader入门精要》透明是游戏中经常要使用的一种效果。在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道。当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元出了颜色值和深度值之外,它还有另一个属性——透明度。当透明度为1时,表示该像素是完全不透明的,而当其为0时,则表示该像素完全不会显示。在Unity中,我们通常使用两种方法来实现透明效果:...转载 2018-07-11 19:22:03 · 318 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第7章 基础纹理
转自 冯乐乐的 《Unity Shader 入门精要》纹理最初的目的就是使用一张图片来控制模型的外观。使用纹理映射技术,我们可以把一张图“黏”在模型表面,逐纹素地控制模型的颜色。在美术人员建模的时候,通常会在建模软件中利用纹理展开技术把纹理映射坐标存储在每个顶点上。纹理映射坐标定义了该顶点在纹理中对应的2D坐标。通常,这些坐标使用一个二维坐标(u,v)来表示,其中u是横向坐标,而v是纵向坐标。因此...转载 2018-03-31 16:12:21 · 461 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第6章 开始 Unity 中的基础光照
转自冯乐乐的《Unity Shader入门精要》通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑3种物理现象。首先,光线从光源中被发射出来。然后,光线和场景中的一些物体相交:一些光线被物体吸收了,而另一些光线被散射到其他方向。最后,摄像机吸收了一些光,产生了一张图像。在光学中,我们使用辐照度来量化光。对于平行光来说,它的辐照度可通过计算在垂直于l的单位面积上单位时间内穿过的能量来得到。在...转载 2018-03-31 16:11:40 · 243 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第5章 开始 Unity Shader 学习之旅
转载自 冯乐乐 《Unity Shader 入门精要》一个顶点/片元 着色器的结构大概如下:[plain] view plain copyShader "MyShaderName" { Properties { //属性 } SubShader { //针对显卡A的SubShader Pass...转载 2018-03-31 16:10:59 · 337 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第4章 学习 Shader 所需的数学基础
摘录自 冯乐乐的《Unity Shader入门精要》笛卡尔坐标系1)二维笛卡尔坐标系在游戏制作中,我们使用的数学绝大部分都是计算位置、距离、角度等变量。而这些计算大部分都是在笛卡尔坐标系下进行的。一个二维的笛卡尔坐标系包含了两个部分的信息:一个特殊的位置,即原点,它是整个坐标系的中心。两条过原点的互相垂直的矢量,即X轴和Y轴。这些坐标轴也被称为是该坐标的矢量。OpenGL 和 DirectX 使用...转载 2018-03-31 16:10:06 · 188 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础
概述总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达到需要的效果。一个最常见的流程是。1)创建一个材质2)创建一个Unity Shader,并把它赋给上一步创建的材质3)把材质赋给要渲染的对象4)在材质面板中调整Unity Shader的属性,以得到满意的效果下图显示了Unity Shader和材质是如何一起工作来控制物体的渲染的。Unity中的材质需要结合一个Game...转载 2018-03-31 16:09:10 · 190 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础
概述总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达到需要的效果。一个最常见的流程是。1)创建一个材质2)创建一个Unity Shader,并把它赋给上一步创建的材质3)把材质赋给要渲染的对象4)在材质面板中调整Unity Shader的属性,以得到满意的效果下图显示了Unity Shader和材质是如何一起工作来控制物体的渲染的。Unity中的材质需要结合一个Game...转载 2018-03-31 16:08:10 · 244 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第2章 渲染流水线
来源作者:candycat http://blog.csdn.net/candycat1992/article/2.1 综述渲染流水线的最终目的在于生成或者说是渲染一张二维纹理,即我们在电脑屏幕上看到的所有效果。它的输入是一个虚拟摄像机、一些光源、一些Shader以及纹理等。渲染流程分成3个阶段:应用阶段、几何阶段、光栅化阶段。应用阶段:这个阶段由我们的应用主导的,因此通常由CPU负责实现,我...转载 2018-03-31 16:06:52 · 216 阅读 · 0 评论 -
关于ShaderLab的学习
之前写了一些博客,都是按照乐乐女神的《Unity Shader 入门精要》一书中所写的,闲余之时,发现别人有更好更全面的总结,所以之后会转载一些别人的总结,集百家之长,让自己更专注于代码(好吧,其实就是总结得没别人好)。同时也会写一些自己的shader发上来另外附送乐乐女神的博客地址:https://blog.csdn.net/candycat1992/article/category/14234...原创 2018-03-31 16:02:13 · 275 阅读 · 0 评论 -
高光反射模型
高光反射部分计算公式为。 C specular=(Clight*Mspecular)*pow(max(0,dot(V,R)),Mgloss)Clight是入射光的颜色和强度,材质的高光反射系数Mspecular,视角方向V和反射方向R点乘的结果再与高光系数pow。R=2(dot(N,-L))N+L,幸运的是CG提供了计算发射方向的函数reflect。下面是Shader代码...原创 2018-03-20 16:41:45 · 2613 阅读 · 0 评论 -
基础纹理
纹理最初的目的就是使用一张图图片来控制模型的外观。使用纹理映射技术,我们可以把一张图“粘”在模型表面。逐纹素地控制模型颜色。//计算机图形学中的纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,通常我们更多地称之为花纹。对于花纹而言,就是在物体表面绘出彩色花纹或图案,产生了纹理后的物体表面依然光滑如故。对于沟纹而言,实际上也是要在表面绘出彩色...原创 2018-03-23 22:12:42 · 353 阅读 · 0 评论 -
UnityCG.iginc
UnityCG,iginc内置很多我们平时需要使用的转化函数,这个头文件可以在Uinty目录下的Editor->Data->CGIncludes里面找到,源码有1千多行,就不贴出来了,下面转发别人总结的一些常用函数,在《Unity Shader 入门精要》里也有一些详细的介绍:内置shader辅助函数定义在UnityCG.cginc文件中顶点转换函数:Function:Descript...转载 2018-03-23 19:38:43 · 612 阅读 · 0 评论 -
兰伯特(Lambert)模型
漫反射,是投射在粗糙表面上的光向各个方向反射的现象。当一束平行的入射光线射到粗糙的表面时,表面会把光线向着四面八方反射,所以入射线虽然互相平行,由于各点的法线方向不一致,造成反射光线向不同的方向无规则地反射,这种反射称之为“漫反射”或“漫射”。这种反射的光称为漫射光。很多物体,如植物、墙壁、衣服等,其表面粗看起来似乎是平滑,但用放大镜仔细观察,就会看到其表面是凹凸不平的,所以本来是平行的太阳光被这...原创 2018-03-13 13:12:39 · 8922 阅读 · 0 评论 -
shader中的法线变换
总结起来有两个,一个是基本的转换,单纯的模型空间转换到世界空间,第二个是需要法线贴图时(Bump Textrue)的时候就转换到切线空间下进行计算。1.从“模型空间”到“世界空间”(Object To World):(1)方法1,使用和“顶点”到“世界”变换矩阵的“逆转置矩阵“对法线进行相同的变换,因此先得到顶点的模型到世界的变换矩阵的“逆矩阵”(Unity_WorldToObjec...转载 2019-04-08 13:06:20 · 3702 阅读 · 2 评论