在Unity 2018.2 版本正式启用了高清渲染管线,shader可视化编程. 现在我们就尝尝鲜,来实现了个物体边缘发光的shader效果. 准备 点击Windos->Package Manger 打开包管理器: 依次安装如下渲染器: 场景布置 创建场景设置 创建一个圆柱体和材质球,并将材质球给与圆柱体 创建一个Shader Graph(PBR) 打开shader 利用可视化蓝图 编写发光Shader 为材质球选择我们创建的shader 我们可以通过color调节发光颜色 通过power 调节…
此篇文章记录Dissolve Effect(溶解特效)的制作过程 软件环境 Unity 2018.1.2f1 Packages: Lightweight Render Pipeline 1.1.11 Dissolve Effect最终效果 创建工程及初始设定 New Project & New Scene: 创建Lightweight Pipeline Asset,打开Vertex Lighting与HDR,关联到Graphics Settings当中: 在场景中放置Monkey Model,创…
软件环境 Unity Version: 2018.1.2f1 边缘发光材质效果 创建工程 打开Unity并创建一个新工程 安装依赖项 Window -> Package Manager打开包管理器,安装二个依赖包: 1. Lightweight Render Pipeline2. Shader Graph Lightweight Render Pipeline Shader Graph 创建Lightweight Pipeline Asset Assets -> Create -> Re…
软件环境 Unity 2018.1.6f1 Lightweight Render Pipeline 1.1.11-preview Phase In and Out效果预览 角色沿Y轴逐渐出现和消失 Shader Graph制作记录 a) 通过Position节点,获取物体在Object Space中Y轴方向上的变化 b) Step节点,结合Y轴变化生成黑白mask贴图 c) Smooth Step节点,结合Y轴变化生成黑白mask贴图,但在黑白交界处有渐变平滑过渡 d) 使用 Alpha Cli…
Shader Graph Error  : The current render pipeline is not compatible with this master node 问题产生环境: Unity 2019.2.15f1 HDRP 6.9.2 报错和截图如上, 说是 当前渲染管道与此主节点不兼容, 解决方法: 1: 在 Assets 资源管理器中新建一个文件夹, 例如上图中我是在 _Shaders 文件夹下新建了一个名为 HDRP 的文件夹 2: 选中刚刚新建的文件夹, 点击鼠标右键创…
一个顶点/片元 着色器的结构大概如下: Shader "MyShaderName" { Properties { //属性 } SubShader { //针对显卡A的SubShader Pass { //设置渲染状态和标签 //开始CG代码片段 CGPROGRAM //该代码的预编译指令,例如: #pragma vertex vert #pragma fragment frag //CG代码写在这儿 ENDCG //其他设置 } } SubShader { //针对显卡B的SubSh…
About Shader Graph https://docs.unity3d.com/Packages/com.unity.shadergraph@7.3/manual/index.html unity Shader Graph 基本用法 https://www.bilibili.com/video/BV1sz4y1R7Jn Unity强化篇(九) —— Shader Graph简介(一) https://www.jianshu.com/p/d477ce0d8939 unity-shader-…
Unity2018 Shader Graph 实验室 Shader Shader Graph Unity  Tips: -- 在shader forge和amplyfy Shader节点图形化shader编程的诱惑下,unity官方终于在2018版本也推出了而自己shader节点可视化编程工具Shaderr Graph.本篇文章是对Shader Graph一些效果的尝试,建议学习shader的朋友也尝试下这些工具,对shader的理解会更加直观 -- 效果中自发光光晕是使用的PostProces…
从今天起,开始翻译Unity关于shader的官方文档.翻译水平比较一般,目的主要是通过翻译来提升对shader的见解,也让其他人更容易的了解shader.以下开始正文内容: 编写Surface Shaders 和光交互的shader写起来很复杂,有不同的光照类型.阴影选项.渲染路径(正向渲染和延迟渲染),有时shader需要考虑所有的复杂性. Unity中的Surface Shader是一个代码生成器,用它来写光照shader(lit shader)相比于使用低阶的顶点/像素shader(ve…
第1篇 基础篇 第1章 欢迎来到Shader的世界 第2章 渲染流水线 第3章 Unity Shader 基础 第4章 学习Shader所需的数学基础 第2篇 初级篇 第5章 开始Unity Shader的学习之旅 第6章 Unity中的基础光照 第7章 基础纹理 第8章 透明效果 第3篇 中级篇 第9章 更复杂的光照 第10章 高级纹理 第11章 让画面动起来 第4篇 高级篇 第12章 屏幕后处理效果 第13章 使用深度和法线纹理 第14章 非真实感渲染 第15章 使用噪声 第16章 Unit…
写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shader的艰难,在群里也见了非常多人提出的问题. 我认为学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么优点呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader刚開始学习的人,但要…
UDK 的材质编辑器十分好用,毕竟是所见即所得的.虽然unity也有类似第三方插件,但易用性还是差很多,下面主要是,把一些常见表达式概念对应起来. 1. UDK CameraVector (相机位向量)表达式  机位向量表达式使您能够在游戏运行时访问相机的指向向量.在要求材质于不同视角角度下呈现出不同效果时  对应unity shader中Input结构附加变量: float3 viewDir.对于内建的viewDir, 它和CameraVector一样是切线空间中的变量. 对于unity 如果…
参考文献:http://www.360doc.com/content/13/0923/15/12282510_316492286.shtml Unity Shader是着色器,将纹理.网格信息输入,得到材质的一段程序,具体是个什么东西,还需要亲自实践才知道.一个Unity大神推荐我:如果要学计算机图形编程(游戏编程的基础),可以先学习UnityShader,往后再学习OpenGL和DX.不说废话,依我的风格,都是直接看实例,笔者的教程偏向于傻瓜式的,应该适合入门. 前提:安装了Unity和VS,…
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数学基础. 第五章:利用简单的顶点/片元着色器来实现辅助技巧. 第六章:基本光照模型. 第七章:法线纹理.遮罩纹理等基础纹理. 第八章:透明度测试和透明度混合. 第九章:复杂光照实现. 第十章:高级纹理(立方体纹理等). 第十一章:纹理动画.顶点动画. 第十二章:屏幕特效. 第十三章:深度纹理. 第十四章:非真…
写在前面 时隔两个月我终于来更新博客了,之前一直在学东西,做一些项目,感觉没什么可以分享的就一直没写.本来之前打算写云彩渲染或是Compute Shader的,觉得时间比较长所以打算先写个简单的. 今天扫项目的时候看到了很早之前下载的Unity Chan的项目,其实很早之前就想要分析下里面的卡通效果是怎么做的. Unity Chan 想必很多人都看到或听过Unity Chan,也可以说是Unity酱.Unity娘--她数次出现在早期的AR程序中,一个萌娘在现实生活中的一张卡片上跳来跳去的我相信你…
写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shader的艰难,在群里也见了很多人提出的问题.我觉得学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么好处呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader初学者,但要: 有一定的…
0x00 前言 在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代表性的几个问题,总结在这里和大家进行分享.主要涵盖了** StreamingAssets.Profiler.Playable.Particle.Spine.Launcher.Scripting .Shader. Shader Graph**等领域,其中会着重介绍一下是用一个workaround的方式在ShaderGraph中获取_CameraDepthTexture. 同时,也欢迎大家加入我们这个讨…
Unity Shader 阶段性反思与总结(一) 最近在写Shader的时候,总是感觉力不从心,感觉自己已经看了蛮久的书了,也有一定的积累了,但是一想写什么效果,完完全全就是脑袋一团空白.典型的例子就是,我想写边缘光效果的时候,完完全全就是不知道怎么下手这样子. 然后,感觉自己在看书,也没什么提升,每天好像就从书上抄代码一样.....让我很有挫败感. 现在记录一下我在学Shader的时候,读<unity shader 入门精要>这本书的时候感觉困惑.不能理解的几个点.希望有一天我能回来进行回答…
笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题.              [Unity Shader](三)------ 光照模型原理及漫反射和高光反射的实现         [Unity Shader](四)------ 纹理之法线纹理.单张纹理和遮罩纹理的实现              [Unity Shader](五) ------ 透明效果之半透明效果的原理及实现 目录 前言 一.…
Unity Shader 学习之旅 unityshader图形图像 纸上学来终觉浅,绝知此事要躬行 美丽的梦和美丽的诗一样 都是可遇而不可求的——席慕蓉 一.渲染流水线 示例图 Tips:什么是 GPU 加速计算? 1.1Draw Call CPU过Draw Call来g告诉GPU开始一个渲染过程.一个Draw Call会指向本次调用需要渲染的图元列表. 通俗的讲我们可以把CPU理解成一群专家,他们有着超强和快速的计算能力,能解决各种各样的问题.GPU则是许许多多个流水线上的工人,尽管它们只能做…
https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247493518&idx=1&sn=c51b92e9300bcfdcd6d106f06f934971&chksm=fe1dd325c96a5a3372415e960279338affb6d46b6b5ca061c33204b916892338d612e481112b&scene=21#wechat_redirect 对游戏开发者而言,着色器长久以来就是游戏…
为方便个人手机学习时候查阅,从网上转来这些彩图. 如属过当行为,联系本人删除. 勘错表 http://candycat1992.github.io/unity_shaders_book/unity_shaders_book_corrigenda.html 转自:http://candycat1992.github.io/unity_shaders_book/unity_shaders_book_images.html 前言 第2章 渲染流水线  图2.1 真实生活中的流水线  图2.2 渲染流水…
转载自 冯乐乐的 <Unity Shader 入门精要> 消融效果 消融效果常见于游戏中的角色死亡.地图烧毁等效果.这这些效果中,消融往往从不同的区域开始,并向看似随机的方向扩张,最后整个物体都将消失不见.我们将学习如何在Unity中实现这种效果.效果如下图所示. 要实现上图中的效果,原理非常简单,概括来说就是噪声纹理+透明度测试.我们使用对噪声纹理采样的结果和某个控制消融程度的阈值比较,如果小于阈值,就使用clip函数把它对应的像素裁剪掉,这些部分就对应了图中被“烧毁”的区域.而镂空区域边缘…
转载自 冯乐乐的 <Unity Shader 入门精要> 尽管游戏渲染一般都是以照相写实主义作为主要目标,但也有许多游戏使用了非真实感渲染(NPR)的方法来渲染游戏画面.非真实感渲染的一个主要目标是,使用一些渲染方法使得画面达到和某些特殊的绘画风格相似的效果,例如卡通.水彩风格等. 卡通风格的渲染 卡通风格是游戏中常见的一种渲染风格.使用这种风格的游戏画面通常有一些共有的特点,例如物体都被黑色的线条描边,以及分明的明暗变化等.如下图所示. 要实现卡通渲染有很多方法,其中之一就是使用基于色调的着…
建立一个基本的屏幕后处理脚本系统 屏幕后处理,顾名思义,通常指的是在渲染完整个场景得到屏幕图像后,再对这个图像进行一系列操作,实现各种屏幕特效.使用这种技术,可以为游戏画面添加更多艺术效果,例如景深.运动模糊等. 因此,想要实现屏幕后处理的基础在于得到渲染后的屏幕图像,即抓取屏幕,而Unity为我们提供了这样一个方便的接口OnRenderImage函数.它的函数声明如下: MonoBehaviour.OnRenderImage(RenderTexture src,RenderTexture de…
线纹理的代码非常简单,但是我们有必要在这之前首先了解它们背后的实现原理. 深度纹理实际上就是一张渲染纹理,只不过它里面存储的像素值不是颜色值而是一个高精度的深度值.由于被存储在一张纹理中,深度纹理里的深度值范围是[0,1],而且通常是非线性分布的.那么,这些深度值是从哪里得到的呢?总体来说,这些深度值来自于顶点变换后得到的归一化的设备坐标(Normalized Device Coordinates, NDC).一个模型要想最终被绘制在屏幕上,需要把它的顶点从模型空间变换到齐次裁剪坐标系下,这是通…
转载自 冯乐乐的 <Unity Shader入门精要> 立方体纹理 在图形学中,立方体纹理是环境映射的一种实现方法.环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境. 和之前见到的纹理不同,立方体纹理一共包含了6张图像,这些图像对应了一个立方体的6个面,立方体纹理的名称也由此而来.立方体的每个面表示沿着世界空间下的轴向观察所得的图像.和之前使用二维纹理坐标不同,对立方体纹理采样我们需要提供一个三维的纹理坐标,这个三维纹理坐标表示了我们在世界空间下…
转载自 冯乐乐的<Unity Shader入门精要> Unity 的渲染路径 在Unity里,渲染路径决定了光照是如何应该到Unity Shader 中的.因此,如果要和光源打交道,我们需要为每个Pass指定它使用的渲染路径,只有这样才能让Unity知道,“哦,原来这个程序想要这种渲染路径,那么好的,我把光源和处理后的光照信息都放在这些数据里,你可以访问啦!”也就是说,我们只有为Shader 正确地选择和设置了需要的渲染路径,该Shader的光照计算才能被正确执行. Unity支持多种类型的渲…
转载自 冯乐乐的 <Unity Shader入门精要> 透明是游戏中经常要使用的一种效果.在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道.当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元出了颜色值和深度值之外,它还有另一个属性——透明度.当透明度为1时,表示该像素是完全不透明的,而当其为0时,则表示该像素完全不会显示. 在Unity中,我们通常使用两种方法来实现透明效果:第一种是使用透明度测试,这种方法其实无法得到真正的半透明效果:另一种是透明度混合. 在之前的学习中,我…
转自 冯乐乐的 <Unity Shader 入门精要> 纹理最初的目的就是使用一张图片来控制模型的外观.使用纹理映射技术,我们可以把一张图“黏”在模型表面,逐纹素地控制模型的颜色. 在美术人员建模的时候,通常会在建模软件中利用纹理展开技术把纹理映射坐标存储在每个顶点上.纹理映射坐标定义了该顶点在纹理中对应的2D坐标.通常,这些坐标使用一个二维坐标(u,v)来表示,其中u是横向坐标,而v是纵向坐标.因此,纹理映射坐标也被称为UV坐标. 尽管纹理的大小可以是多种多样的,例如可以是256×256或者…