
ShaderShader学习
文章平均质量分 59
记录一些shader特效实现和入门工具推荐;最新加上了UnityShader入门学习十篇
avi9111
数字只是管理的一个起始点,并非最终目标
展开
-
一个很干的Transform矩阵转换原理,学习Shader必须学习或了解的数学原理
我想该不会我是最后一个知道 lookAt的矩阵转换的吧。。。。关于Look AtA great thing about matrices is that if you define a coordinate space using 3 perpendicular (or non-linear) axes you can create a matrix with those 3 axes plus a translation vector and you can transform any v原创 2022-05-08 22:31:20 · 1063 阅读 · 0 评论 -
0基础UnityURP渲染管线人物渲染_皮肤_头发_眼睛_各向异性_SSS之实践
关于次表面散射一般脸部的Shader,都是脸部最重要,- 这和同人的需求不同- 而且国内手游对这样的脸部实现需求就还好- 本人美术不懂,- 本人比较懒,图形学原理也不懂,- 本人还是有些追求的,之后可能会说怎么调贴图,所以,今天还只是说说HLSL的代码不吹不黑,参照国外一个皮肤Skin效果实现的次表面散射,真的,国外随便一个美术老哥都能写程序<所以这样的shader代码就看过就好,不要考虑扩展性,魔改性了,当然,稳健性性还是有的,外国人做事还是比较稳>原创 2022-04-24 15:39:23 · 5669 阅读 · 3 评论 -
0基础尝试实现UnityURP渲染管线的AdditionalLit(点光源,聚光灯)非平行光的光照模型代码
目录0基础其实最好代码的本质代码的入口代码分析代码逻辑代码实现自行练习0基础其实最好其实不可能是0基础,但是要是你是0基础,就好像张三丰说的,忘了你爸吧假如你现在开始看现在的Unity URP或Standard Shader1-如果熟读乐乐姐的《入门精要》,那是2015年出版的,2013年开始写,写的那是一个优雅,而你现在再看Unity内部Shader肯定内伤。2-如果你有多年程序经验,你会觉得看不明白的代码,肯定是好代码,但细心想想,这年头看不明白的代.原创 2022-04-20 19:58:49 · 2331 阅读 · 0 评论 -
从别人基础开始敲最差劲游戏引擎四_光线DiffuseLight
前提,在阅读这个文章前,你需要前面从头敲游戏引擎的Engine.exe跑通(小学生都能跑通)懂得什么是光线,什么是漫反射(初中知识)懂得Shader和HLSL官方Diffuse代码我们先上一段官方的代码很多大神,老师也提供这段代码:// 展开,避免动态分支 [flatten] if (diffuseFactor > 0.0f) { float3 v = reflect(-lightVec, normal); fl原创 2022-03-25 01:16:14 · 4283 阅读 · 0 评论 -
从别人基础开始敲最差劲游戏引擎二_反射Shader的HLSL语法
一般的DirectX的渲染流程是1. Set Vertex Input2.SetVertex Buffer3.1 SetMatrix3.6. SetShader(Compiled)这几个流程,都需要一个结构体几乎都是从一开始,第一步之前就需要一个c++结构体有没一种可能Unity源码给出了一种方案:HRESULT CreateInputLayout( [in] const D3D11_INPUT_ELEMENT_DESC *pInputElementD...原创 2022-03-24 03:13:04 · 2151 阅读 · 0 评论 -
渲染引擎入门到精通一_导入模型的实现和解决fbxsdk的使用坑
前置条件,学习这个文章前,需完全跑通项目渲染引擎入门到精通-前篇零-HLSL编译的方法研究_avi9111的博客-优快云博客导入模型因为渲染需要用到法线,切线,原来的cub,四边形已经不够用了所以我们的引擎还是需要导入模型,因为受unity影响很深,还有某“大神”的Engine, 在有这个迭代需求后的第一反应还是,使用fbx加载模型,yaml做序列化当然这不是渲染的重点1.安装fbx sdk(1.6g还挺大的)//官方下载 exe2.碰到Fbxstring .原创 2022-03-22 12:28:23 · 1222 阅读 · 0 评论 -
Unity官方Shader光照模型学习_GI_ReflectionPobe光照探针之获取资源的几个方法
效果如上,其实一般人还真“看不出”,无法观察使用了最新URP地DEBUG工具才能观察到 使用了官方默认的lit才观察到,某个自写Shader还把这个探针破坏了 观察的主体body和衣服,头发另外计算,2者还很难观察其实这里不是想说GI原理,也不是要说反射原理,主要还是想说下怎么能获取到 reflect cubemap获取Cubemap的几个途径...原创 2021-12-23 01:49:18 · 1162 阅读 · 0 评论 -
UnityMMD+UnityChan+Shader从0到放弃
会逐一从0开始说说UnityChan的ShaderUnityChan应该可以说是二次元人模渲染的一个标准了以下使用了2017年1.2.1的UnityChan版本主要考虑是资料比较多(起码,乐乐姐有详细说),比较稳定,比较容易入门,适配的Unity的版本比较多最后会附上整个项目吧,尽量把(估计难,涉及了MMD的2个模型,外加2个UnityChan的模板)Falloff Texturefalloff 的 skin 是一个渐变图看看乐乐姐怎么额说的:计算包含衰减的光..原创 2021-12-02 13:02:04 · 663 阅读 · 0 评论 -
Unity3d的ShadeSH9环境光的球谐函数的应用
ShadeSH9 应用在什么地方呢??。。。参考一Unity Standard Shader 技术分析 - 知乎 (zhihu.com)Diffuse部分三种环境光源都会进行Diffuse部分的计算。当物体接受LightMap的时候,环境光照会被合并到LightMap中去,而当物体不接受LightMap的时候,会使用一种在RTR4中被称为Sphere Harmonic Irradiance的技术,也就是使用球谐函数来解析的表示Irradiance Environment Map.原创 2021-11-18 01:25:48 · 3708 阅读 · 0 评论 -
Unity商业shader开发之高光RimColor,RimLight关键代码解析
原理puppert大神已经说的很清楚了,而关键还是viewDirUnity Shader-边缘光(RimLight)效果_puppet_master的专栏-优快云博客代码一#ifdef RIMLIGHT half rim = 1-saturate(dot(i.viewDir, i.normal)); c.rgb += saturate(_RimColor.rgb * pow(rim, _LightArgs.w));#endif//RIMLIGHT代码二//计算视线方向与法原创 2021-11-15 15:34:47 · 1164 阅读 · 0 评论 -
记一次Rider手写UnityShader_非图解基本的光照模型,包含ViewDir_NdotL高光和漫反射等等计算
不错的工具,如下图:要Rider 2021之后,最新的编辑器,旧版本2020还不行编写Shader如有更好的编写的工具,请留言(会补上)原创 2021-11-10 21:35:41 · 1277 阅读 · 0 评论 -
ASE修复URP环境的最简单方法
Unity在使用了URP环境后很多第三方的用了Standard默认着色器的模型都显示不正确了完全不能渲染有什么方法可以正常显示呢?改默认Standard是不可能只要将有问题的材质(基本正常的Shader都有问题)替代成以下Shader即可其中名字为:(带下划线,和原来shader一致)_MainTex...原创 2021-10-25 16:50:17 · 2597 阅读 · 0 评论 -
商业渲染之乱七八糟的ShadowMap-利用了UnityWorldToClipPos
一起来找碴(不同场景,环境接近,结果不同)同样shader,不同材质,结果又不同最后发现是这个问题// Upgrade NOTE: excluded shader from DX11; has structs without semantics (struct v2f members depth)//#pragma exclude_renderers d3d11// Upgrade NOTE: excluded shader from DX11; ha...原创 2021-10-22 10:47:17 · 562 阅读 · 0 评论 -
Unity商业Shader渲染-URP之二渲染一个类海水效果
在URP下,渲染海水网上的资料都说用,所以用用:_CameraColorTexture但必须是在Game View才能观察到_CameraColorTexture,Scene View是无法实时调试的如上图,确实如大神所说,是有不同的:1之前一个是2层绘制,上面1层是如薄纱般小透明覆盖下层,这一个拿到一个1个镜头图层,作色彩融合,类似透明度融合2者肯定不同后者效果是好,可是不确定这个_CameraColorTexture,在URP管线下,效能如何使用_原创 2021-10-21 18:50:52 · 1957 阅读 · 2 评论 -
Unity商业Shader渲染-URP-基于AmplifyShader Editor
LWRP/URP/HDRP区别URP其实也叫LWRP,也是URP的前身如果一直以来有使用Unity的同学可能知道在2019年初的时候,一开始Unity预备区分低清和高清渲染,当然现在也这样,所谓低清就是:light weight render pipline(简称:LWRP)这个包负责时至今日,LWRP的项目已经不多(当年很多有实力的示例项目),完全转成URP也不是难事所以,完全不同担心URP和LWRP的差异导致生产环境的问题,或影响(社区因为人多,当中也很多解决方案)URP和原原创 2021-10-21 11:12:33 · 1414 阅读 · 1 评论 -
商业Shader渲染-烘培不详细说明和注意事项
在Unity里,gameObject可以勾选static,而大部分情况,如ai navagation,烘培等都需要勾选烘焙四种四种分类:以下分类有什么作用呢,灯光可以是静态 or 不静态,物体也可以是静态 or 不静态,交叉之后,烘培肯定可以有4种(和常人理解的渲染不同,和3dmax多年积累下来的完全静态渲染也不同),渲染又出了名做的烂,配置多又没作用,还要搞4重渲染,Unity的用意是?今天太晚了,之后再补分析(详细))具体操作,和注意逐项如下:(1)静态灯光下的静态物体烘焙设置步原创 2021-10-21 01:46:09 · 298 阅读 · 0 评论 -
Unity商业化Shader渲染-成功的商业引擎到底要具备什么
只是个人随便记录一下感想,下面没什么干货成功的定义是什么,是不是每个人的定义不同?才怪呢其实成功的定义就是,商业上的成功一款商业化的引擎要成功需要什么条件?出色的3D渲染,虚幻引擎比Unity引擎渲染好啊(10年就这么说了),cocos2dx一开始大意,现在3d渲染已经赶上了其实,成功更多时候来自于“独角兽”,和自身的实力关系不大,甚至环境的影响还大点,因为独角兽就是市场环境造成的,而我们追求的成功其实是市场的成功从个人的小角度看cocos2dx的失败在于,跨平台,当一个原创 2021-10-19 11:29:13 · 250 阅读 · 0 评论 -
Unity商业Shader渲染-描边
NPR,PBR这些概念就不多说了,知道了也没用;因为就好像被英文单词,背了前面abandon,across,然后就没有然后了。《原神》将卡通手机渲染推到另一个高度(个人感觉是超前二次元研究,单独赛道研究,压单边研究),是米哈游独有的高度,我们也很难模仿。但是其卡通描边渲染还是值得学习一下,其实,米哈游真的没参考《罪恶装备》吗?未必;而那一家公司:Arc System Works(以下简称ASW),明显就是国内二次元渲染的天花板ASW公司提出一种描边的实现(貌似是在2012年),和以下不同,不原创 2021-10-18 14:38:59 · 369 阅读 · 1 评论 -
Unity商业Shader渲染-后期处理PostProcess-URP支持调色,调对比度等
关于后处理volumn的概念和操作就不多说了网上也很多文章和说法了我是也不相信就是配置一下,点2个按钮,这么简单的操作,还需要大量,重新说的?这不是3岁小孩天生就懂的?=======================关于后处理,官方没说的是:1.官方没说能在游戏用,更没说能在手游用2.官方是有升级的,是新东西吧,比旧的volumn好,起码ui比较新,但我没说好用啊3.URP不能用4.我大官方的Profiles就这么多,一向这么多,已经很多了PostProcess可用原创 2021-10-17 11:53:02 · 649 阅读 · 1 评论 -
商业Shader渲染-深度图
万物皆可深度图这个图如何得到的呢?和一般网上说的Unity方法,cg方法都有点不同 //VP矩阵(projectionMatrix),是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中 //实际上也就是3d->2d,世界坐标,转视线贴图 Matrix4x4 projectionMatrix = GL.GetGPUProjectionMatrix(m_LightCamera.pro.原创 2021-10-16 11:18:09 · 469 阅读 · 0 评论 -
商业Shader渲染——渲染本身
渲染如米饭,你真的吃懂了吗?工作多年,原来没搞懂过,也没尝试去搞懂,渲染流程上的各种坐标转换所以今天,侃侃渲染本身好笑不?好笑么?你吃了那么多年米饭,你真的自己去种米,就算你家,你搞懂了米是怎么成为米的?以下内容太精致了,所以只能一字不漏的抄,请仔细阅读(删减了大部分,删减的内容包括了各种转换步骤的详细解释,各种硬扯的作者自认为好的例子,就好像谷种到米饭的过程,是可以有多一个步骤叫“双蒸”,这肯定有其可取之处,但是很多人终其一生都没吃过“双蒸”米饭,不也活的好好的,所以其实渲染的原创 2021-10-16 02:34:21 · 181 阅读 · 0 评论 -
商业Shader渲染_各种基础参数和算法
Unity Shader入门精要笔记 UNITY_MATRIX_MVP 和 _worldspacecamerapos_palawind-优快云博客个人日记。。。。随便侃侃参考自上面链接,之后再结合实际应用,说说,加深记忆,温故知新...原创 2021-10-16 01:29:04 · 162 阅读 · 0 评论 -
Unity记一次TA的二次元风格渲染
本来,在写一个Profiler性能优化系列突然,又去搞TA去了,也不知写不写的完,无论是Profiler系列或者TA按惯例,这里只会说下,未必是从头到尾的的TA科普,因为我不会这里,只会说说代码实战,也就是shader实战,加以一些辅助工具(需自行百度)至于,作品项目,最后会分享吧,丕定大神定义的二次元风格三元素描边 阶梯化渐变 风格化渲染...原创 2021-10-02 09:56:18 · 1018 阅读 · 0 评论 -
UnityShader_手游商业效果之三:前后人体描边
在墙后面,或者草丛里,还是可以显示出透明人形一般的渲染绘制,还是通过ZDepth,判断场景中对象的先后绘制顺序,判断到背遮挡的物体,甚至完全不会只,所以,关键还是将ZWrite关闭,让墙后原来不被绘制的物体重新被绘制 ZWrite Off ZTest Off Blend One OneMinusSrcAlpha最简单的Shader源码Shader "Game/InGameCut"{ Properties { ...原创 2021-08-18 00:47:25 · 231 阅读 · 0 评论 -
挑战手写PBR
有一说一gloss是光泽度和roughness(粗糙度)差不多,表达物体表面的微小结构(法线贴图无法表达),就是翻译的字面意思啦。specular是表示材质表面的反射程度(色彩信息,明度只是一项),打个比方,材质表面比成水面,一部分光是直接被反射掉(就是speculor部分),一部分是射到材质里面再反射出来(就是diffuse)这部分会被吸收掉一部分,Diffuse就是吸收部分的颜色剩下的就是这个材质的固有颜色了。再举个例子(示意图)假如,假设上面的gloss和specular的定义原创 2020-11-12 10:56:57 · 660 阅读 · 0 评论 -
Unity记一次Amplify Shader Editor入门渲染案例中文解释——UV流动动画
多年以前,热衷于可视化,当然,一事无成后来,却放弃了可视化在学Shader的过程,也是坚决不用工具没想到,当自己真正用工具的时候;原创 2021-05-29 18:33:54 · 1277 阅读 · 0 评论 -
Unity记一次Amplify Shader Editor入门渲染——ZTest,ZWrite,Cull Mode
效果图玩家主角被建筑物的遮罩,貌似是很简单的实现方法有用射线的,也有用Zwrite的也就是除了多个Pass以外,其实ZWrite和ZTest也很重要今天就来理一理这些参数和知识点理论部分ZTest:深度测试,开启后测试结果决定片元是否被舍弃,可配置ZWrite:深度写入,开启后决定片元的深度值是否写入深度缓冲,可配置ZTest可设置的测试规则:ZTest Less:深度小于当前缓存则通过ZTest Greater:深度大于当前缓存则通过ZTest LEqua...原创 2021-05-30 01:29:13 · 824 阅读 · 0 评论 -
Unity记一次Amplify Shader Editor-编辑器扩展开发Canvas框架
没有什么分析,,其实也可以出个图分析一下的只是 [MenuItem( "Window/Amplify Shader Editor/Open Canvas", false, 1000 )] static void OpenMainShaderGraph() { if( IOUtils.AllOpenedWindows.Count > 0 ) { AmplifyShaderEditorWindow currentWindow = CreateTab( "Empty"原创 2021-05-30 11:53:47 · 299 阅读 · 0 评论 -
Unity Amplify Shader Editor-编辑器扩展开发Canvas框架
如图,小惊喜啊,居然移植过来了虽然还缺了很多功能虽然还很多静态变量虽然还做了一个转换器DevHelper详细的明天才弄了惊喜啊,整个Amplify的代码基础api都几乎搞定了蓝图还远吗?原创 2021-06-01 01:04:28 · 324 阅读 · 1 评论 -
记一次渲染引擎入门
是的,现在要说的不是游戏引擎, 仅仅只是渲染引擎??其实我还不确定呢?确定还入门个屁所以,现在入门看看这个渲染 引擎基于:Filament一直以为Filament是谷歌亲生儿子源地址:GitHub - google/filament: Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2看到描述这么多,国内几乎没有只言片原创 2021-06-29 12:42:27 · 764 阅读 · 0 评论 -
记一次Amplify Shader Editor入门_Unity官方Shader基础属性说明之不得不说ZWrite,Ztest
官方的Interface Shader的含义原创 2021-06-06 12:11:56 · 1640 阅读 · 7 评论 -
UnityShader从头学
111z之后再补充吧,估计又完成不了Shader "UI/Default-UI"{ Properties { [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} _Color ("Tint", Color) = (1,1,1,1) [Toggle] Font("Font", Float) = 0 _MaskRect ("MaskRect", Vector) = (0,0,1,1) _ClipS.原创 2021-05-16 22:47:33 · 168 阅读 · 0 评论 -
记一次Maya脚本开发入门第3篇之python语法片段
之后可能还会写一篇Python科普,高级Python应用,Maya——Python的整合和Python工具等等的文章吧这里只是记录一些python的入门语法随机记录,无先后顺序所谓的新手TA,TA美术向,美术转程序等等的人群,或者适合这些人看看吧...原创 2021-03-14 12:36:33 · 377 阅读 · 0 评论 -
元神主机渲染分享
1111 后补原创 2021-02-04 03:12:47 · 259 阅读 · 0 评论 -
RenderMonkey入门使用详情来自AMD的渲染调试工具
目录入门使用步骤如下1.添加基础渲染模型和材质2.添加变量3.编写Shader3.1 添加其他变量4.结果入门总结比较古老的工具据说能扩展SDK插件开发和开源的预览工具但明显任何现代的IDE功能都没有,更不需要期望这个工具会有一般也应该要有我们预期一个牛逼工具该有的功能不过这工具已经算功能豪华了,毕竟和虚幻也一样号称功能强大但现代IDE中很简单的功能,例如断点调试,所见即所得,可视化工具,真的都没有所以,他可以随便说自己是强大的工具,例如虚幻就好像一辆原创 2021-01-31 02:40:31 · 696 阅读 · 0 评论 -
UnityShader自定义渲染管线LWRP学习第四章阴影部分遗留问题
国外大佬的最终效果图网上找的总结:ShadowCaster通过ScriptableRenderContext的DrawShadows方法渲染ShadowCaster这个pass,写入shadowmap。 https://docs.unity3d.com/ScriptReference/Rendering.ScriptableRenderContext.DrawShadows.html接口说明在这。 实现在ShadowCasterPass 顶点shader,主要是做坐标变换,和一般坐标变原创 2021-01-19 20:20:12 · 892 阅读 · 0 评论 -
UnityShader第一章自定义渲染管线之基础LWRP(URP)学习
LWPR还是涉及挺多知识的Shader, Unity基础Camera,Light,等,Unity版本变迁,C#作为毕业设计,或者,只是大部分人都每前面的耐性把这里假设你懂Shader等知识,只会记录一些C#注意点下面代码基于2020,理论上2019能用 var filterSettings = new FilteringSettings(RenderQueueRange.opaque, mLayerMask); //这么写就是绘制不出。。。。。。 //var filterSett原创 2021-01-18 19:16:33 · 802 阅读 · 0 评论 -
UnityShader used without having been completely initialized解决办法
解决办法:加入UNITY_INITIALIZE_OUTPUT(v2f, o);原创 2021-01-18 01:49:05 · 1352 阅读 · 0 评论 -
UnityShader的ShadowBuffer和ShadowMap和CommandBuffer为什么要这么写
其实我也不知道,渲染Renderer在BeginSample和EndSample之间很好理解但是必须在EndSample之后又要再调用一次Render所以,除了c++ java等基础预言,任何一个框架或公司二次开发产品例如UnityEditor这些,还是必须找一些别人踩过坑的源码调试。要是自己摸,百分之百摸到,耗时费力 shadowBuffer.BeginSample("Render Shadows"); context.ExecuteCommandBu原创 2021-01-17 22:40:32 · 379 阅读 · 0 评论 -
UnityShader学习第三章Lights遗留问题
每一张都有几个小知识点,没有学透,记录一下,后面再详细说Visible Lights为了正确渲染场景中的所有光线,我们定义的管线需要通过Light Data传递给GPU。实现多种光线渲染的方法有多种,我们也不得不做在自定义的管线里做相应处理;Unity默认管线使用每一个Pass里面渲染一种光线,是多Pass,每Object的方式;而Unity LWPR管线使用一个单独的Pass渲染多种光线,是单Pass,每Object的方式;最后Unity HD管线使用同时渲染多个Object 的surface d原创 2021-01-17 00:36:44 · 172 阅读 · 0 评论