
Unity Shader入门
文章平均质量分 65
Lingo_work
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Unity Shader总结(十六)——PBS(环境光照、实时光源、反射探针 )
文章目录金属工作流高光反射工作流光照面板反射探针探针类型互相反射要先在Edit–Project Settings–Player–Other Settings–Color Space中选择Linear,因为基于物理的渲染需要使用线性空间;金属高光反射强,非金属漫反射强金属工作流Albedo对应物体的整体颜色高光反射工作流Albedo定义了表面的漫反射强度;光照面板mode中实时光照比较耗费性能,改为baked会将光照效果烘焙到光照纹理(lightmap)中,但动态的物体的阴影无法改变,最原创 2021-07-07 15:16:37 · 1241 阅读 · 0 评论 -
Unity Shader总结(十六)——Unity渲染优化(批处理、LOD)
文章目录CPU1.动态批处理2.静态批处理3.共享材质4.应用场景GPU一、减少需要处理的顶点数目优化几何体LOD技术遮挡剔除技术二、减少需要处理的片元数目控制绘制顺序当心半透明物体减少实时光照和阴影三、节省带宽减少纹理大小利用分辨率缩放四、减少计算复杂度shader的LOD技术优化代码CPU1.动态批处理优点:一切处理unity自动完成,物体可以移动;缺点:限制很多,可能无法动态批处理一些使用了相同材质的物体;原理:每一帧把可以批处理的模型网格合并,再把合并后的模型数据给GPU,然后使用同一个材原创 2021-07-06 17:05:08 · 2037 阅读 · 1 评论 -
Unity Shader总结(十五)——噪声(火焰、水面、缥缈雾效)
文章目录消融效果水波效果缥缈雾效消融效果// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Unity Shaders Book/Chapter 15/Dissolve" { Properties { _BurnAmount ("B原创 2021-07-06 15:25:09 · 1092 阅读 · 0 评论 -
Unity Shader总结(十四)——卡通和素描风格的渲染
文章目录卡通渲染渲染轮廓线高光实现素描风格渲染许多游戏使用非真实感渲染(NPR)的方法渲染游戏画面,例如卡通和水彩风格等;卡通渲染渲染轮廓线这里使用过程式几何轮廓线渲染:使用两个Pass,第一个Pass使用轮廓线颜色渲染整个背面的面片,并在视角空间下把模型顶点沿着法线方向向外扩张一段距离,让背部轮廓线清晰可见;为了防止对于一些内凹的模型,背面面片遮挡正面面片的情况,在扩张背面顶点之前,先对顶点法线的z分量处理,使它们等于一个定值,然后把法线归一化后再对顶点扩张,使扩展后的背面更加扁平化,降低了遮挡正原创 2021-07-06 14:25:32 · 872 阅读 · 0 评论 -
Unity Shader总结(十三)——深度和法线纹理、改进的运动模糊和边缘检测及高度雾的生成
文章目录如何获取查看运动模糊基于屏幕后处理的全局雾效边缘检测深度纹理实际就是一张渲染纹理,它里面存储的像素值是一个高精度的深度值,范围是[0,1],非线性分布;如何获取脚本中:深度:camera.depthTextureMode = DepthTextureMode.Depth深度+法线:camera.depthTextureMode = DepthTextureMode.DepthNormals深度和深度+法线:camera.depthTextureMode | = DepthTextureM原创 2021-07-06 10:48:25 · 576 阅读 · 0 评论 -
Unity Shader总结(十二)——屏幕后处理
文章目录建立屏幕后处理脚本调整屏幕亮度、饱和度和对比度边缘检测实现描边高斯模糊Bloom效果运动模糊建立屏幕后处理脚本首先创建脚本检查当前脚本是否支持,绑定在摄像机上;后面的屏幕特效继承该类即可;using UnityEngine;using System.Collections;[ExecuteInEditMode][RequireComponent (typeof(Camera))]public class PostEffectsBase : MonoBehaviour { // C原创 2021-07-05 13:12:26 · 725 阅读 · 1 评论 -
Unity Shader总结(十一)——纹理动画
序列帧动画勾选纹理的Alpha is Transparency属性,并设置水平和竖直方向的数目,赋给创建的Quad// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Unity Shaders Book/Chapter 11/Image Sequence Animation" { Properties { _Color ("Color Tint", Color) =原创 2021-07-05 10:21:28 · 371 阅读 · 0 评论 -
Unity Shader总结(十)——Cubemap、镜子、玻璃、程序纹理
Cubemap是环境映射的一种实现方法,使用三维纹理坐标进行采样,这个三维纹理坐标代表世界空间下的一个3D方向,这个方向矢量从立方体中心出发,采样的结果由交点计算得出。缺点:1.当场景引入新的物体、光源或物体发生移动时,都要重新计算;2.仅可以反射环境,不可以反射使用了Cubemap的物体自身,因为Cubemap不能模拟多次反射,如两个金属球互相反射(全局光照可以实现),因此尽量对凸面体使用,不要对凹面体使用,因为凹面体会反射自身。天空盒1.新建材质;2.在材质的unity shader下选择sky原创 2021-07-02 10:28:32 · 1250 阅读 · 0 评论 -
Unity Shader阶段总结——光照、纹理、阴影
Shader "Unity Shaders Book/Common/Bumped Specular" { Properties { _Color ("Color Tint", Color) = (1, 1, 1, 1) _MainTex ("Main Tex", 2D) = "white" {} _BumpMap ("Normal Map", 2D) = "bump" {} _Specular ("Specular Color", Color) = (1, 1, 1, 1) _Glos原创 2021-06-27 16:34:34 · 407 阅读 · 2 评论 -
shader常用api
包含文件结构体函数float、half、fixed的区别在pc端没有差别,移动端half和fixed等价,一般fixed存颜色和单位矢量原创 2021-06-26 22:35:27 · 312 阅读 · 0 评论 -
Unity Shader总结(九)——阴影
屏幕空间的阴影投射unity会调用lightmode为ShadowCaster的Pass来得到可投射阴影的光源的阴影投射纹理和摄像机的深度纹理,然后根据它们的纹理来得到屏幕空间的阴影图,如果摄像机的深度纹理记录的深度值大于转换到阴影投射纹理中的深度值,就证明该表面在阴影中。如果想要物体接受投影,只需要在shader中对阴影图采样,首先把表面坐标从模型空间变换到屏幕空间中,然后使用这个坐标对阴影图进行采样。不透明物体投射阴影通用过Mesh Renderer组件中的Cast Shadows 和 Rece原创 2021-06-25 23:16:29 · 1834 阅读 · 0 评论 -
Unity Shader总结(八)——光源类型和光照衰减
光源类型光源分为:平行光,点光源,聚光灯,面光源光源属性有五个:位置,方向,颜色,强度,衰减前向渲染中,Base部分计算环境光和自法光,Base只会处理一个逐像素的平行光,如果有多个平行光,其他的按逐顶点处理或者在Additional中按逐像素处理。Shader "Unity Shaders Book/Chapter 9/Forward Rendering" { Properties { _Diffuse ("Diffuse", Color) = (1, 1, 1, 1) _Specula原创 2021-06-25 18:34:34 · 698 阅读 · 0 评论 -
Unity Shader总结(七)——Unity渲染路径
前向渲染前向渲染路径有三种处理光照的方式:1.逐顶点:not important;2.逐像素:important,如果逐像素光源数量小于Quality Setting中的逐像素光源数量,则会有更多光源以逐像素渲染;3.球谐函数;每个Additional Pass可以与上一次的光照结果在帧缓存中叠加,混合模式为Blend One One;一个Bass Pass只执行一次,一个Additional Pass可能会被影响该物体的逐像素光源被多次调用,即每个逐像素光源会执行一次Additional P原创 2021-06-25 17:42:36 · 203 阅读 · 0 评论 -
Unity Shader总结(六)——半透明
文章目录透明度测试透明度混合开启深度写入的半透明常见的混合类型双面渲染透明度测试的双面渲染透明度混合的双面渲染实现透明效果的方法有两种:透明度测试和透明度混合透明度测试透明度测试实现的效果只有不透明和完全透明两种效果,不需要关闭深度写入。只要小于阈值就舍弃、Shader "Unity Shaders Book/Chapter 8/Alpha Test" { Properties { _Color ("Color Tint", Color) = (1, 1, 1, 1) _MainTex原创 2021-06-24 21:24:03 · 1117 阅读 · 2 评论 -
Unity Shader总结(五)——基础纹理
单张纹理实践Shader "Unity Shaders Book/Chapter 7/Single Texture" { Properties { _Color ("Color Tint", Color) = (1, 1, 1, 1) //white是内置纹理的名字 _MainTex ("Main Tex", 2D) = "white" {} _Specular ("Specular", Color) = (1, 1, 1, 1) _Gloss ("Gloss", Range(8.原创 2021-06-24 14:53:53 · 248 阅读 · 0 评论 -
Unity Shader总结(四)——光照模型
自发光:cemissivec_{emissive}cemissive高光发射:cspecularc_{specular}cspecular漫反射:cdiffusec_{diffuse}cdiffuse环境光:cambientc_{ambient}cambient一、漫反射1.1 兰伯特模型cdiffuse=(clight⋅mdiffuse)max(0,n^⋅l^)c_{diffuse}=(c_{light}\cdot m_{diffuse})max(0,\widehat{n}\cdot原创 2021-02-10 15:26:16 · 246 阅读 · 0 评论 -
Unity Shader总结(三)——顶点变换之蕾姆的呆毛在哪里
注意,以下求法的原理不再赘述。最简单的求法请直接跳转文末总结。文章目录概述一、模型空间——>世界空间(模型变换)二、世界空间——>观察空间(观察变换)(右手坐标系)法一:法二:三、观察空间——>裁剪空间3.1 透视投影3.2 正交投影四、裁剪空间——>屏幕空间五、总结概述蕾姆睡醒发现头上有跟呆毛,这根呆毛在屏幕上的坐标到底是多少?流程为:模型空间(PmodelP_{model}Pmodel)——>世界空间(PworldP_{world}Pworld)——>观原创 2021-02-04 15:27:08 · 297 阅读 · 0 评论 -
Unity Shader总结(二)——矢量和矩阵
Unity Shader总结(二)——矢量和矩阵一、向量的点乘用途二、 向量的叉乘用途三、矩阵正交矩阵仿射变换平移缩放旋转复合变换坐标空间变换子空间到父空间(模型空间到世界空间)父空间到子空间特殊情况总结一、向量的点乘用途1.计算向量的投影2.根据cos值来判断是否在视野范围内或者在物体的前后左右。二、 向量的叉乘用途1.求出法向量2.判断三角面片正反三、矩阵正交矩阵矩阵中要注意的正交矩阵,一个正交矩阵的转置和它的逆矩阵相等,即:逆矩阵求解计算量大,所以当它是正交矩阵时只要转置原创 2021-02-03 18:41:31 · 1134 阅读 · 0 评论 -
Unity Shader总结(一)——渲染流水线
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-02-02 19:57:28 · 593 阅读 · 0 评论