shader 笔记(一)】的更多相关文章

[Unity Shader笔记]渲染路径--Forward渲染路径 (2014-04-22 20:08:25) 转载▼ 标签: shader unity renderingpath forward 游戏 分类: UnityShader *ForwardBase.ForwardAdd的LightMode只能运行在Came为Forward.DeferredLighting的渲染模式下 *ForwardAdd这个Pass需要和ForwardBase一起使用,否则会被Unity忽视掉 * Forward…
shader “MyShader”{ Properties{ -CubeMap(“Cube Map” , Cube) = ""{这里可以添加图片渲染模式} } SubShader{ tags{"Queue" = "Transparent"} } } 1.Tag标签 Tags{"TagName1"  = "Value1" "TagName2"  = "Value2" }…
1,渲染队列值小的先渲染,值大的后渲染 2,zTest,zWrite zTest:LEqua zWrite:On 则:zWrite中,深度值小于深度值缓冲区的值会被通过 参考:http://www.cnblogs.com/ljx12138/p/5341381.html…
//U3D用的shader语言叫ShaderLab,基础语法官方文档地址 //https://docs.unity3d.com/Manual/SL-Shader.html //开头指明名字,可以在别的shader中通过名字调用该shader的Pass什么的 //UsePass "ShaderName/PassName" Shader "ShaderName" { //属性定义 Properties { [DisplayType]_Name("Display…
项目开发遇到一个需求,就是当坦克的准心瞄准敌方(enemy tank 或 item box)时,要让选中的对象的轮廓高亮起来,这实际上是接下来要讲解的实时渲染中轮廓线的渲染应用.实现方式有多种,下面逐一总结各自的原理和优缺点. · 法线外拓的几何轮廓线渲染 核心是使用两个Pass渲染模型,在第一个Pass中,使用轮廓线颜色渲染整个背面的面片,并在视角空间下把模型顶点沿着法线方向向外扩张一段距离,目的让背部轮廓线可见. viewPos = viewPos + viewNormal * _Outli…
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数学基础. 第五章:利用简单的顶点/片元着色器来实现辅助技巧. 第六章:基本光照模型. 第七章:法线纹理.遮罩纹理等基础纹理. 第八章:透明度测试和透明度混合. 第九章:复杂光照实现. 第十章:高级纹理(立方体纹理等). 第十一章:纹理动画.顶点动画. 第十二章:屏幕特效. 第十三章:深度纹理. 第十四章:非真…
本笔记,是根据自己学习shader的笔记,主要是参照冯乐乐的<Shader 入门精要> 和游戏蛮牛shaderLad视频 和网上一些博客. 为啥要学习这个呐? 自己其实之前学过一段时间的shader,但是中间终止了.当时学的还挺多吧,算是有点基础. 但是有一点自己明白.shader学好,还关联3D数学,图形学的知识.刚好,自己这方面不足.再加上自己前些日子面试网易等 知名大公司,被打击的体无完肤,自己的确很多的不足,底子的确很不扎实. Shader,即着色器,与着色器相关联的是渲染流水线. 渲…
本笔记,是根据自己学习shader的笔记,主要是参照冯乐乐的<Shader 入门精要> 和游戏蛮牛shaderLad视频 和网上一些博客. 为啥要学习这个呐? 自己其实之前学过一段时间的shader,但是中间终止了.当时学的还挺多吧,算是有点基础. 但是有一点自己明白.shader学好,还关联3D数学,图形学的知识.刚好,自己这方面不足.再加上自己前些日子面试网易等 知名大公司,被打击的体无完肤,自己的确很多的不足,底子的确很不扎实. Shader难的原因? 牵扯到整个渲染流程,面向GPU编程…
Preface 这一节所有的主要内容都在一个OpenGL库文件中<LoadShaders.h> ,只需要用LoadShader()函数进行加载即可.但是由于老是出错,所以自己实现了一下,也用以提供给有兴趣了解着色器的编译.连接等原理的人. 因为程序基本都是自己实现的,所以,只需要包含最基本的OpenGL头文件即可运行. 效果如下: Background 由于固定管线编程过程中涉及的大量计算(当然,上个例子并没有多少计算量)都是再CPU上进行的,而这些可能影响CPU处理其他事情的效率,所以不妨运…
Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 float time = floor(_Time.y * _Speed) % 64; // 根据时间计算当前行数和列数 float row = floor(time/_HorizontalAmount); // 对uv坐标进行偏移 half2 uv = float2(i.uv.x/_HorizontalA…
第三章<UnityShader概述>的读书笔记: 1.Unity Shader模板提供了几种选择: 标准光照模型(新添加的基于物理的渲染方法) 不含光照的基本的顶点.片元着色器 屏幕后处理效果 ComputeShader较为复杂,不做介绍 2.Shader lab是一层抽象,开发者通过这一层抽象来写Shader,免去和很多文件打交道: 3.Shader lab定义了一个材质需要的所有东西,而不仅仅是着色器代码: 4.Shader lab就是我们直接写的那个Shader文件: 5.Propert…
Shader学习笔记 例子: Shader "SrfShader1"{ //定义显示在Inspector中的变量,并从Inspector中获取值 Properties{ _Color("Color",Color)=(1,1,1,1) //用来融合漫反射或2d纹理的颜色 _MainTex("MainTex (RGB)",2D)="white"{} //主2d纹理图片色 _Gloss("Gloss",Range…
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[DirectionalBlur] 方位模糊是一个按照指定角度循环位移并叠加纹理,最后平均颜色值并输出的一种特效.效果如下图: Angle=0:BlurAmount=0.1:   Angle=45;BlurAmount=0.1; 看看源代码: ++++++++++++++++++++++++++++++++++++++          //模糊的角度 float Angle : register(C0);  …
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[Embossed] Embossed(浮雕效果)          浮雕效果主要有两个参数:Amount和Width.Amount控制浮雕边缘的对比度,Width参数控制浮雕效果的精细程度,数值越小越精细. 效果如下图所示: 源代码如下: +++++++++++++++++++++++++++++++++++++++++++++ //浮雕特效 //数量,一个控制雕刻边缘对比度的参数,数值越大,对比越强 flo…
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[BandedSwirl] 因工作原因,需要在Silverlight中使用Pixel Shader技术,这对于我来说可算是相当有难度了,首先我是个Java Web开发程序员,从来没正经地学过微软的开发语言和工具:其次,对于算法这种东西,向来有种天生的排斥,一看便头疼.不过项目逼到份上了,只能硬着头皮上,真不知道领导们是怎么想的.还是言归正传吧,记录记录自己的学习心得. 熟悉Silverlight的人都知道,SL…
原文:DirectX11笔记(十)--Direct3D渲染6--PIXEL SHADER 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010333737/article/details/78787227 前言 像素 shader 像素 shader示例 重构 前言   之前讨论渲染管线的时候提到过, 在光栅化阶段, 顶点 shader 的输出会通过插值填充到三角形的像素中, 插值之后的结果被作为输入传到像素 shader 中. 不考虑 Ge…
原文:DirectX11笔记(八)--Direct3D渲染4--VERTEX SHADER 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010333737/article/details/78778192 前言 Vertex Shader示例 代码说明 重构 前言   Shader其实就是一种GPU来执行的程序, 他使用名为 HLSL ( High Level Shading Language ) 的语言编写, HLSL 是一种和 C++…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes GPU已经被优化为处理单个地址或者连续地址(流操作)的大量内存数据:这和CPU的随机内存访问形成鲜明对比.因为顶点和像素可以独立处理,所以GPU被架构为大量的并行运算:比如NVIDIA…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十二章:几何着色器(The Geometry Shader) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 假设我们没有使用曲面细分阶段,几何着色器阶段就是在顶点着色器和像素着色器之间的一个可选的阶段.几何着色器输入的是基元,输出的是一个基元列表:假如我们绘制的是三角形列表,那么几何着色器…
本篇文章是对Unity Shader入门精要的学习笔记,插图大部分来自冯乐乐女神的github 如果有什么说的不正确的请批评指正 目录 渲染流水线 流程图 Shader作用 屏幕映射 三角形遍历 两大渲染测试 混合 CPU.GPU.图形接口和驱动的关系 CPU和GPU之间的通信 CPU和GPU并行工作的秘密:命令缓冲区 显示流畅的方法 着色器语言 ShaderLab Shader选用 顶点片元着色器 Unlit Shader 结构 一个简单的Shader 库文件 调试 注意点 3D数学 空间 渲…
目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. 渲染状态(RenderSetup) 2.2.3.3. 通道(Pass) 2.2.4. 回退(FallBack) 2.3. 渲染管线 1. 概述 在上一篇文章<Unity3D学习笔记2--绘制一个带纹理的面>中介绍了如何绘制一个带纹理材质的面,并且通过调整光照,使得材质生效(变亮).不过,上篇文章隐藏了…
Shader "Custom/Diffuse Texture" { // Shader的开始,双引号内饰该Shader的名字 Properties { _MainTex ("Base (RGB)", 2D) = "white" {} // 属性块,可有可无,_属性名字("显示出来的名字", 类型) = 默认值 {选项(可选,但2D,Rect等必须要)} } SubShader { // 子着色器,至少一个,具体使用哪个,根据目…
1.写在前面的心情 o(︶︿︶)o   坚持不下来就是失败:每次看到candycat博客都会一阵阵冷汗很愧疚... shader .图形还是要学:不仅是兴趣,以后一定有用.现在做游戏UI开发,工作上还要用心呀. 看书学习的好处就是徐徐渐进,<Unity Shaders and Effects Cookbook>看看看. 今天是第一章,Diffuse_Shader:参考http://blog.csdn.net/candycat1992/article/details/17130591 今后细节也…
在Android中,提供了Shader类专门用来渲染图像以及一些几何图形. Shader类包括了5个直接子类,分别为:BitmapShader.ComposeShader.LinearGradient.RadialGradient以及SweepGradient.其中,BitmapShader用于图像渲染:ComposeShader用于混合渲染:LinearGradient用于线性渲染:RadialGradient用于环形渲染:而SweepGradient则用于梯度渲染. 使用Shader类进行图…
1.每个Vertex Shader都有用户定义的输入属性,例如:位置,法线向量和纹理坐标等.Vertex Shaders也接收一致变量(uniform variables). uniform variables:一个只读的全局变量是为所有的顶点绘制调用 2.除了用户定义的输入变量,GLSL为每个Vertex定义了一组输入属性(内置变量), in int gl_VertexID; in int gl_InstanceID; gl_VertexID:当前被处理的顶点的索引.它是当前顶点在数组中的索引…
Unity中,Unity Shader 都是ShaderLab 来编写的.ShaderLab 是Unity提供的编写Unity Shader 的一种说明性语言. 1)Properties :定义了着色器所需要的各种属性.这些属性讲会出现在Inspector. 2) SubShader:每一个Unity Shader文件可以包含多个SubShader语义块,但最少要有一个. SubShader{ //可选的 [Tags] //[RenderSetUp] Pass{ } //Other Passes…
渲染流水线 1)应用阶段(CPU处理) 首先,准备好场景数据(摄像机位置,视锥体,模型和光源等) 接着,做粗粒度剔除工作. 最后,设置好每个模型的渲染状态(使用的材质,纹理,shader等) 这一阶段最重要的是渲染所需要的几何信息,即渲染土元,渲染图元可以是点,线,三角面等. a.把数据加载到显存中 b.设置渲染状态,通俗说这些状态定义了场景中的网格是怎样被渲染的. c.调用DrawCall,一个命令,CPU通知GPU.(这个命令仅仅会指向一个需要被渲染的图元列表,并不会包含材质信息,因为在上一…
光照模型:用数学的方法模拟现实世界中的光照效果.   场景中模型身上的光反射到相机中的光线: 1.漫反射:产生明暗效果 2.高光反射:产生镜面反射,物体中有最亮且比较耀眼的一部分 3.自发光: 4.环境光:   漫反射 光线被粗糙的表面无规则的向各个方向反射的现象. 漫反射的计算公式(兰伯特光照模型)模拟漫反射 漫反射光 = 光照颜色和强度 * 漫反射颜色 * max(0, dot(法线方向,  光照方向)) 光照颜色和强度:Unity引擎提供的,CGIncludes/UnityLighting…
Alpha测试 AlphaTest Great:大于 AlphaTest Less:小于 AlphaTest Equal:等于 AlphaTest GEqual:大于等于 AlphaTest LEqual:小于等于 AlphaTest Never:全不渲染 AlphaTest Always:全部渲染 如果使用后两项的命名的情况下,比较后的数字项没有意义   AlphaTest 比较项 数字 AlphaTest Great 0.5 //表示只渲染alpha值大于0.5的部分 AlphaTest L…