UnityShaderLab
文章平均质量分 52
雨凛星星海
企鹅:843224210
展开
-
15.透明shader
首先透明的shader应该是最后渲染的,如果一开始就渲染有可能被场景中不透明的挡住。shader:// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'Shader "Custom/NormalMapShader-Frag"{ Properties { _Color("Color",Color) = (1,1,1,1) _MainTex("Main Tex",2D)原创 2021-02-17 17:30:00 · 273 阅读 · 0 评论 -
14.法线贴图shader
pixel = (normal + 1) / 2normal = pixel * 2 -1法线贴图存储rgba值 分别的取值范围是0~1而法线的取值范围是-1 ~ 1所以要经过上面的公式相互转换ps:法线贴图上的坐标对应的是切线空间下的法线方向 而不是模型空间下的。因为只是是模型的原点变了不同的模型中没个点的切线是唯一不变的。shader完整代码:// Upgrade NOTE: replaced '_Object2World' with 'unit...原创 2021-02-17 17:27:13 · 362 阅读 · 0 评论 -
13.贴图纹理shader
使用贴图来替换之前我们在shader的上由使用者更改的漫反射颜色(_Diffuse)shader代码:// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'Shader "Custom/TextureShader-Frag"{ Properties { _Color("Color",Color) = (1,1,1,1) _MainTex("Main Tex",.原创 2021-02-17 17:20:28 · 223 阅读 · 0 评论 -
12.unity内置函数
UnityCG.cginc中一些常用的函数//摄像机方向(视角方向)float3 WorldSpaceViewDir(float4 v) 根据模型空间中的顶点坐标 得到 (世界空间)从这个点到摄像机的观察方向float3 UnityWorldSpaceViewDir(float4 v) 世界空间中的顶点坐标==》世界空间从这个点到摄像机的观察方向float3 ObjSpaceViewDir(float4 v) 模型空间中的顶点坐标==》模型空间从原创 2021-02-17 17:02:39 · 349 阅读 · 0 评论 -
11.Blinn-Phong高光
Blinn-Phong高光模型的公式:Specular = 直射光 * pow(cosθ,高光的参数)θ是法线和x的夹角 x是平行光和视野方向的平分线shader代码Shader "Custom/MySpecularShader-Blinn-Phong"{ Properties { _Diffuse("Diffuse color",Color) = (1,1,1,1) _Gloss("Gloss",Range(8,...原创 2021-02-17 12:45:40 · 386 阅读 · 0 评论 -
10.高光反射Blinn
高光反射的公式:Specular = 直射光 * pow(cosθ,高光的参数) θ是反射光方向和视野方向的夹角由图像看出高光参数可控制光的可视范围逐顶点的高光反射// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/MySpecularShader-Vert"{ Properties { ...原创 2021-02-16 18:46:21 · 465 阅读 · 0 评论 -
9.半兰伯特光照模型
前情提要:前面一节的漫反射实际上是根据兰伯特光照模型来进行实现的但这种做法有个缺点就是顶点法线和光的夹角大于90度的时候的成色是完全黑的这和我们生活中见到的事物是不一样的。所以就有了新的光照模型------半兰伯特光照模型。对比:兰伯特:Diffuse = 直射光颜色 * max(0,cosθ(光和法线夹角))半兰伯特:Diffuse = 直射光颜色 * (cosθ(光和法线夹角) *0.5 + 0.5)shader实现:// Upgrade NOTE: replaced.原创 2021-02-16 18:35:41 · 381 阅读 · 0 评论 -
8.光照模型(兰伯特光照模型)
什么是光照模型?光照模型就是一个公式,使用这个公式来计算在某个点的光照效果。标准光照模型在标准光照模型里,我们把进入摄像机的光分为下面几个部分自发光(Self-luminous)(如萤火虫) 高光反射(Specular) 漫反射(Diffuse)Diffuse = 直射光颜色 * max(0,cosθ(光和法线夹角)) 这个max 后面的0其实就是夹角大于90度的时候当做90度来处理。cosθ = 光的向量 · 顶点的法线 (向量的点乘)向量点乘和叉乘点乘:(标量...原创 2021-02-16 18:28:33 · 1074 阅读 · 0 评论 -
7.相机替换shader
原文:https://zhuanlan.zhihu.com/p/51080323shader代码:Shader "Custom/ReplaceShader"{ Properties { } SubShader { Tags { "RenderType"="ReplaceType" } pass { CGPROGRAM #pragma vertex vert原创 2021-02-16 18:16:59 · 339 阅读 · 0 评论 -
6.shader:语义 和VFACE使用
原文:https://zhuanlan.zhihu.com/p/50492287代码:Shader "Custom/TwoFaceShader"{ Properties { _FrontTex("FrontTex", 2d) = "white"{} _BackTex("BackTex", 2d) = "white"{} } SubShader { cull off Pass原创 2021-02-16 18:07:58 · 1271 阅读 · 0 评论 -
5.shader渲染管线和结构体
原文 https://zhuanlan.zhihu.com/p/49165180大白话渲染管线图形渲染管线之所以被叫做管线,就是因为它和一根管子的概念很像,我们可以理解为这根管子的末端连接的是我们最终的显示屏幕,管子的起始端连接的是我们的原始素材。把我们想展示在屏幕上的素材从起始端放入,然后素材通过管子经过一系列操作最终展示在屏幕上。而我们如果想加工一下素材最后的显示效果就可以在这根管子中做一些特殊的操作处理,以使素材经过我们所自定义的操作使其最终达到我们想要的效果。这根管子从头到尾大致原创 2021-02-16 18:02:11 · 202 阅读 · 0 评论 -
4.shader基本语法变量
属性部分https://zhuanlan.zhihu.com/p/47506575ps : 下面这个标签博主说了曲率 其实就是 一个幂函数的概念 y = x^3 maxY = 1Properties{ [PowerSlider(3)]_Float("我是Float", Range( 0 , 1)) = 0.5}subshaders主体部分在一个Shader中,可以有多个SubShader以及一个SubShader中也可以有多个Pass,但是一个Shader中必须要至.原创 2021-02-16 17:52:38 · 272 阅读 · 0 评论 -
3.shader的基本结构
编译器以及环境选择https://zhuanlan.zhihu.com/p/147176392这里我选择vs + hlsl tools for vs平时用vs写c# 感觉这套方案有高亮和代码补全和vscode那边差不多在vs里下了插件发现没效果虽然作者说可以使用https://stackoverflow.com/questions/62139190/are-there-any-visual-studio-2019-extensions-for-unity-shader-filesht原创 2021-02-16 17:32:46 · 298 阅读 · 0 评论 -
2.在unity中创建shader模板
知识提要:Mesh Filter : 存储一个Mesh(网格,模型的网格,就是模型的由哪些三角面组成,组成一个什么样子的模型,三角面的一些顶点信息)Mesh Renderer:用来渲染一个模型的外观,就是样子, 按照 mesh给它皮肤,给它颜色通过Material(材质)控制模型渲染的样子Material 贴图(可以没有,可以是一个单纯的颜色) Shader创建shader时的模板和打包容器(来自知乎tae)发现有几种shader选项...原创 2021-02-16 17:25:56 · 1775 阅读 · 0 评论 -
1.Shader初识
找了下网上适合入门shader的教材https://blog.csdn.net/u014732824/article/details/102959342https://www.zhihu.com/column/unityTA什么是shader?shader就是着色器,简单来说就是由开发者来自定义游戏里物体的渲染方式类似下下面小球的效果(来自知乎tae)Shader分为两类 :1. 顶点Shader(3D图形都是由一个个三角面片组成的,顶点Shader就是计算每个三角面片上的原创 2021-02-16 17:11:49 · 1650 阅读 · 0 评论