
unityshader入门精要学习笔记
羽扇轩轩
想拿着画笔写代码,奈何 路漫漫 其修远。
展开
-
逐像素高光反射
//逐像素光照Shader "Unity Shader Book/Chapter 6/Specular Vertex_Leve2"{ Properties { _Diffuse("Diffuse",Color) = (1,1,1,1) _Specular("Specular",Color) = (1,1,1,1) _Gloss("Gloss",Range(8.0,256))...原创 2018-08-09 15:09:57 · 279 阅读 · 0 评论 -
带立方体纹理 的反射【Unity Shader 入门精要10.1.3】
//10.1.3 反射Shader "Unlit/Chapter10-Reflection"{ Properties { //物体颜色 _Color("Color Tint",Color) = (1,1,1,1) //反射颜色 _ReflectColor("Reflect Color",Color) = (1,1,1,1) //反射程度 _Ref...原创 2018-10-07 17:51:29 · 375 阅读 · 0 评论 -
利用立方体贴图的折射 【Unity Shader 入门精要10.1.4】
//10.1.4Shader "Unlit/Chapter10-Reflection"{ Properties { //物体颜色 _Color("Color Tint",Color) = (1,1,1,1) //折射颜色 _RefractColor("Refract Color",Color) = (1,1,1,1) //折射程度 _Reflract...原创 2018-10-07 20:08:42 · 345 阅读 · 0 评论 -
菲尼尔反射 【Unity Shader 入门精要10.1.5】
//10.1.5,菲尼尔反射Shader "Unlit/Chapter10-Fresnel"{ Properties { //物体颜色 _Color("Color Tint",Color) = (1,1,1,1) //菲尼尔反射强度 _FresnelScale("Fresnel Scale",Range(0,1))=0.5 //模拟反射的环境映射纹理 _Cubem...原创 2018-10-09 15:34:50 · 1652 阅读 · 0 评论 -
镜子效果【Unity Shader 入门精要10.2.1】
//镜子效果 10.2.1Shader "Unlit/Chapter10-Mirror"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } Pass { CGPROGRAM #pragma vertex...原创 2018-10-09 17:02:36 · 600 阅读 · 0 评论 -
玻璃效果【Unity Shader 入门精要10.2.2】
//玻璃效果 10.2.2Shader "Unlit/Chapter10-GlassRefraction"{ Properties { //玻璃的材质纹理 _MainTex ("Texture", 2D) = "white" {} //玻璃的法线纹理 _BumpMap("Normal Map",2D) = "bump"{} //模拟反射环境的纹理 _Cubema...原创 2018-10-10 20:39:17 · 1137 阅读 · 3 评论 -
边缘检测 【Unity Shader入门精要12.3】
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'//12.3 边缘检测Shader "Unlit/Chapter12-EdgeDetection"{ Properties { //主纹理对应输入纹理 _MainTex ("Base(RGB)", 2D)...原创 2018-10-22 12:19:37 · 404 阅读 · 0 评论 -
调整屏幕的亮度,饱和度和对比度 【Unity Shader入门精要12.2】
//12.1//一个用于检查的基类//检查当前平台是否支持渲染纹理和屏幕特效,是否支持Unity Shaderusing System.Collections.Generic;using UnityEngine;//在编辑模式执行[ExecuteInEditMode]//需要绑定组件(类型(相机))[RequireComponent(typeo...原创 2018-10-17 16:36:05 · 745 阅读 · 0 评论 -
高斯模糊 【Unity Shader入门精要12.4】
Blit(src,dest,mat,pass)函数的作用,按照Unity官方API的说法是将src这个RT用mat这个材质中的某个pass渲染,然后复制到dest中。如果要给渲染加一些后处理效果(SSAO,HDR,bloom之类的),几乎可以肯定会用到这个函数。根据Unity自带文档中的例子,在OnRenderImage中调用Blit,然后用指定的mat渲染出来。OnRenderImage(s...原创 2018-10-23 12:38:08 · 1100 阅读 · 2 评论 -
Bloom效果【Unity Shader入门精要12.5】
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'//12.5 Bloom效果Shader "Unlit/Chapter12-Bloom"{ Properties { //声明属性 _MainTex ("Base(RGB)", 2D) = "white"...原创 2018-10-23 18:11:42 · 723 阅读 · 0 评论 -
运动模糊【Unity Shader入门精要12.6】
实现方法:【1】利用一块 累积缓存(accumulation buffer)来混合多张连续的图像。当物体快速移动产生多张连续的图像后,去取他们之间的平均值作为最后的运动模糊图像,然而这种办法消耗很大【2】创建和使用 速度缓存(Velocity buffer)这个缓存中存储了各个像素当前的运动速度,然后利用该值来决定模糊的方向和大小 本节使用的是第一种,不过不需要再一帧中把场景渲染多...原创 2018-11-14 18:21:01 · 570 阅读 · 0 评论 -
获取深度和法线纹理 背后的原理【Unity Shader入门精要13.1.1】
13.1.1背后的原理什么是深度纹理:实际上就是一张渲染纹理,只不过它里面储存的像素值不是颜色值,而是一个高精度的深度值,由于被储存在一张纹理中,深度纹理里的深度范围是[0,1],而且通常是 非线性分布的。深度值来自顶点变换后得到的归一化的设备坐标(Normalized Device Coordinates,NDC)一个模型想要最终被绘制在屏幕上,需要把它的顶点从模型空间变换...原创 2018-11-14 20:15:04 · 2837 阅读 · 1 评论 -
再谈运动模糊【Unity Shader入门精要13.2】
使用速度映射图:速度映射图中存储了每个像素的速度,然后使用这个速度决定模糊的大小和方向速度缓冲的生成有多种方法:一种方法是把场景中所有物体的速度渲染到一张纹理中,但这种方法的缺点在于需要修改场景中所有的物体的Shader代码,使其添加计算速度的代码并输出到一个渲染纹理中《GPU Gems3》第27章中介绍了一种生成速度映射图的方法,这种方法利用深度纹理在片元着色器中为每个像素计算其在世...原创 2018-11-20 18:59:40 · 671 阅读 · 0 评论 -
全局雾效 【Unity Shader入门精要13.3】
雾效(fog)unity 内置的雾效可以产生基于距离的线性或指数雾效。然而,想要在自己编写的顶点/片元着色器中实现这些雾效,需要在shader中添加【#pragma multi_compile_fog】指令,同时还需要使用相关的内置宏,例如【UNITY_FOG_COORDS】【UNITY_TRANSFER_FOG】【UNITY_APPLY_FOG】等,缺点在于不仅需要为场景中所有物体添加相...原创 2018-11-21 15:38:38 · 1203 阅读 · 0 评论 -
卡通风格的渲染【Unity Shader入门精要14.1】
卡通渲染的方法之一:基于色调的着色技术(tone-based shading)。P288实现中,我们往往会使用 漫反射系数 对一张一维纹理进行采样,以控制漫反射的色调 。(7.3节中用渐变纹理实现过这种效果)卡通风格的高光往往是一块分界明显的纯色区域。除了光照模型不同外,卡通风格通常还需要在物体边缘部分绘制轮廓,本节使用基于模型的描边方法。14.1.1渲染轮廓线在实时渲染中,轮...原创 2018-11-29 14:27:51 · 3829 阅读 · 0 评论 -
再谈边缘检测【Unity Shader入门精要13.4】
12.3节中的边缘检测使用的是Sobel算子,但是这种直接对颜色信息进行边缘检测的方法会产生很多我们不希望得到的边缘线,本节学习如何在深度和法线纹理上进行边缘检测,这些图像不会受纹理和光照影响,而仅仅保存了当前渲染物体的模型信息。 Roberts算子的卷积核-1 0 0 1 0 -1 1 0 本质上是计算...原创 2018-11-27 12:51:07 · 670 阅读 · 2 评论 -
【NO.1】图形渲染管线
一本书除了后面的优化其余的都撸完了一遍,但是实际应用起来好多东西记不清,还有好多东西不懂,东百度西百度,最后发现书6里就有。。而且总结的很好,所以,我来二刷啦~~~不得不佩服女神,条理清晰,总结到位,这本书真心喜欢。#程序员的三大浪漫:编译原理,操作系统,图形学。程序员中的“外貌协会”#渲染流水线#什么是渲流水线渲染流水线的最终目的在于生成或渲染一张二维纹理,即我们在电...原创 2019-01-15 18:13:47 · 808 阅读 · 0 评论 -
【NO.2】GPU渲染管线
《real-time提炼总结 第三章》《unity shader 入门精要 第二章》#CPU与GPU之间渲染流水线的起点是CPU,即应用阶段应用阶段大致分为三个阶段:把数据加载到显存中 设置渲染状态 调用DrawCall 把数据加载到显存中硬盘(HDD)----------------->内存(RAM)--------------->显存(VRA...原创 2019-01-28 11:48:09 · 428 阅读 · 0 评论 -
创建立方体纹理【Unity Shader 入门精要10.1.2】
创建环境映射的立方体纹理C#public class RenderCubemapWizard : ScriptableWizard{ public Transform renderFromPosition; public Cubemap cubemap; void OnWizardUpdate() { helpString = "Sele...原创 2018-10-07 17:05:04 · 669 阅读 · 0 评论 -
在unity中实现简单的程序纹理 【Unity Shader 入门精要10.3.1】
using UnityEngine;using System.Collections;using System.Collections.Generic;//在unity中实现简单的程序纹理 10.3.1//在编辑模式执行[ExecuteInEditMode]public class ProceduralTextureGeneration : MonoBehaviour ...原创 2018-10-12 16:26:06 · 892 阅读 · 0 评论 -
逐像素漫反射
///逐像素漫反射Shader"unity shader book/chapter 6/Diffuse Vertex_Leve2"{ properties{ _Diffuse("Diffuse",Color) = (1,1,1,1) } Subshader{ pass { Tags{"LightMode "= "Forwar...原创 2018-08-06 11:06:17 · 311 阅读 · 0 评论 -
逐顶点漫反射
///逐顶点漫反射Shader"unity shader book/chapter 6/Diffuse Vertex_Leve1"{ //属性 Properties{ //声明一个color类型的属性 _Diffuse("Diffuse",Color) = (1,1,1,1) } // Subshader{ ...原创 2018-08-01 17:30:55 · 462 阅读 · 0 评论 -
漫反射:兰伯特和半兰伯特
兰伯特定律(Lambert is law);反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比;漫反射公式:C diffuse=(C light * M diffuse)max(0, <N*<L)(入射光线 的颜色和强度 * 材质 的漫反射系数)max(0, 表面法线 *光源方向的点积)弊端就是在模型光照无法达到的区域通常是全黑的,没有任何明暗变化。 半兰...原创 2018-08-06 15:04:12 · 2941 阅读 · 0 评论 -
单张纹理7.1
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'//单张纹理,纹理映射Shader "Unlit/Chapter7-SingleTextur...原创 2018-08-14 11:06:50 · 200 阅读 · 0 评论 -
逐顶点高光反射
///逐顶点高光反射shader"Unity Shader Book/Chapter 6/Specular Vertex_Leve1"{ //设置了三个属性,漫反射颜色,高光反射颜色,高光区域的大小 properties{ _Diffuse("Diffuse",Color) = (1,1,1,1) _Specular("Specular",Color) = (1,1,1,1) ...原创 2018-08-09 11:24:41 · 348 阅读 · 0 评论 -
凹凸映射7.2
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'//7.2凹凸映射Shader "Unlit/Chapter7-NormalMapTangentSpace"{Properties{ //定义相应属性_Color("Color Tint",Color) = (1,1,1...原创 2018-08-31 15:19:33 · 430 阅读 · 0 评论 -
渐变纹理7.3
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'//7.3渐变纹理Shader "Unlit/Chapter7-RampTexture"...原创 2018-08-31 15:21:25 · 259 阅读 · 0 评论 -
遮罩纹理7.4
//7.4遮罩纹理Shader "Unlit/Chapter7-MaskTexture"{ Properties{ _Color("Color Tint",Color) = (1,1,1,1) //主纹理 _MainTex("Main Tex",2D) = "white"{} //法线纹理,bump是unity内置的法线纹理,对应模型自带的法线信息 ...原创 2018-08-31 15:22:18 · 298 阅读 · 0 评论 -
透明度测试8.3
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'//8.3透明度测试Shader "Unlit/Chapter8-AlphaTest"...原创 2018-08-31 15:23:27 · 412 阅读 · 0 评论 -
透明度混合8.4
//8.4透明度混合Shader "Unlit/Chapter8-AlphaBlend"{ Properties { _Color("Main Tint",Color) = (1,1,1,1) _MainTex("Main Tex",2D) = "white"{} //用于在透明纹理的基础上控制整体的透明度 _AlphaScale("Alpha Scale",Range(...原创 2018-08-31 15:24:27 · 383 阅读 · 0 评论 -
开启深度写入的半透明效果8.5
//8.5 开启深度写入的半透明效果Shader "Unlit/Chapter8-AlphaBlendWrite"{ Properties { _Color("Main Tint",Color) = (1,1,1,1) _MainTex("Main Tex",2D) = "white"{} //用于在透明纹理的基础上控制整体的透明度 _AlphaScale(...原创 2018-08-31 15:26:13 · 522 阅读 · 0 评论 -
双面渲染的透明效果8.7
//8.7 双面渲染的透明效果Shader "Unlit/Chapter8-AlphaBlendBothSided"{ Properties { _Color("Main Tint",Color) = (1,1,1,1) _MainTex("Main Tex",2D) = "white"{} _AlphaScale("Alpha Scale",Range(0,1)) = ...原创 2018-08-31 15:27:58 · 455 阅读 · 0 评论 -
unity的渲染路径
渲染路径 RenderingPath:Unity支持三种RenderingPath(渲染路径)ForwardRendering Path(前向渲染路径) DefferedRendering Path(延迟渲染路径) VertexLitRendering Path(顶点照明渲染路径)(抛弃)大多数情况下,一个项目只使用一种渲染路径 设置渲染路径:LightMode标签:...原创 2018-09-19 19:02:51 · 929 阅读 · 0 评论 -
unity的光源类型9.2.2
// Upgrade NOTE: replaced '_LightMatrix0' with 'unity_WorldToLight'Shader "Unlit/Chapter9-ForwardRendering"{ Properties{ _Diffuse("Diffuse",Color) = (1,1,1,1) _Specular("Specular",Color) = (...原创 2018-09-20 18:51:24 · 445 阅读 · 1 评论 -
让物体接受阴影9.4.3
Shader "Unity Shaders Book/Chapter 9/Shadow"{ Properties { _Diffuse("Diffuse", Color) = (1,1,1,1) //控制高光反射的颜色 _Specular("Specular", Color) = (1,1,1,1) //控制高光区域的大小 _Gloss("Gloss", Ran...转载 2018-09-21 17:57:08 · 412 阅读 · 0 评论 -
统一管理光照衰弱和阴影9.4.4
Shader "Unity Shaders Book/Chapter 9/AttenuationAndShadowUseBuildInFunctions"{ Properties { _Diffuse("Diffuse", Color) = (1,1,1,1) //控制高光反射的颜色 _Specular("Specular", Color) = (1,1,1,1) //...原创 2018-09-21 20:22:09 · 345 阅读 · 0 评论 -
【NO.4】纹理贴图及相关技术
《real-time提炼总结 第五章》《Real-Time Rendering 3rd 第六章》《unity shader 入门精要 第章 》 纹理贴图(Texturing):在计算机图形学中,纹理贴图是使用图像,函数或其他数据来源改变物体表面外观的技术纹理管线(The Texturing Pipeline)纹理(Texturing):是一种针对物体表面...原创 2019-01-30 18:07:39 · 808 阅读 · 0 评论