1 单张纹理Shader "Shader Learning/07 Basic Texture/01 Single Texture" { Properties { _Color("Color Tint", Color)=(1, 1, 1, 1) _MainTex("Main Tex", 2D) = "white" {} _Specular("Specular", Color) = (
摄像机是如何看这个世界的  游戏中摄像机所看到的世界与我们现实中所看到的几乎是一样的。首先,光线从光源中发射出来。然后,光线和场景中的一些物体相交(散射,吸收)。最后,摄像机吸收了一些光,产生一张图像。  光线与物体相交的结果有两个:散射(scattering)和吸收(absorption)散射:只改变光线的方向,但不改变光线的密度和颜色,有两种方向:内部与外部,对应折射与反射。 折射(r
继续学习《Unity Shader 入门精要》。渲染的流程前部分是坐标变换,变换顺序是: 模型空间(Model Space)-->世界空间(World Space)-->观察空间(View Space)-->裁剪空间-->屏幕空间,具体的矩阵变换可以方便的使用内置矩阵: UNITY_MATRIX_MVP 当前模型视图投影矩阵 UNITY_MATRIX
转载 2024-07-27 22:34:17
268阅读
毕竟行为树现在已经比较普及了。既然技能,AI这类复杂的部分都可以分给策划通过类似蓝图的方式完成,UI逻辑这么简单的部分怎可能不行呢?因为听说有公司在尝试,我之前自己也考虑了一下,但都是基于复杂指令式,确实有点麻烦(虽说再麻烦也麻烦不过行为树)。MVVM我一直对MVVM不太感冒,理由是就觉得它相比传统MVC的优化幅度有限。但我却忽略了一点:MVVM虽然对于技术而言优化有限,但是面对非技术却不是这样。
这也是个常见的shader,可以实现类似动漫《枪之国度》的那种轮廓描边卡通画风。在我手头的项目里用来给怪物加“霸体”效果,所谓霸体意思是怪物此时无法被击倒。用途诸如此类。下面放效果图:原谅我在Asset Store里找了半天最后找到这么个丑陋的模型,不过刚好它不是很精细,很好的暴露出了缺点,模型表面法向量突变(也就是不光滑)的地方描边会断掉。这个shader用在cube上时这个问题会更清晰的突显出
极端常用:UnityObjectToClipPos(v.vertex);最基本的顶点变换,模型空间 ==》裁剪空间 mul(unity_ObjectToWorld, v.vertex);顶点:模型空间 ==》世界空间,多用于顶点着色器 UnityObjectToWorldNormal(v.normal);法线:模型空间 ==》世界空间,多用于顶点着色器,float3(归一化后f
写在前面Unity的官方文档对graphview的api只有粗略描述,想要通过API来理解GraphView如何搭建,是非常低效和让人抓狂的。 也许是因为是实验API的关系,但个人感觉Unity的其他API也需要大量借助其他非官方资料和开源项目才能理解。下面进入正题:0 实现GraphView子类构造函数中,将EditorWindow作为参数传入以便后面使用另外我们需要添加一些功能函数SetupZ
转载 10月前
108阅读
子类可以定义父类中的同名成员子类中的成员将隐藏父类中的同名成员 父类中的同名成员依然存在于子类中 通过作用域分辨符(::)访问父类中的同名成员 c.Parent::mi类中的成员函数可以进行重载1.重载函数的本质为多个不同的函数 2.函数名和参数列表是唯一的标识 3.函数重载必须发生在同一个作用域中子类中的函数将隐藏父类的同名函数子类无法重载父类中的成员函数 使用作用域分辨符访问父类中的同名函数
文章目录思路实践在方向光的位置,放一个正交相机调整光源相机参数将光源投影空间的正交视锥体画出来投射阴影接收阴影改进超出Shadow map的默认为光照添加光照处理添加PCF柔滑整体边缘添加SDFs_Like效果添加柔和阴影边缘衰减到光照 MixToLightCommandBuffer版CSharp坑1坑2坑3坑4 - 已修正坑5坑6- 已修正坑7Shader尝试给半透明添加接收阴影待改进已实现
目录目录Shader compilationConditionals in shadersDifferent types of conditionalsSwitch code branch at runtimeBranching in shadersStatic branchingHow to use static branchingDynamic branchingHow to use dyna
在之前的项目或者新建的项目中创建如下目录结构:如果是新的项目,只需创建Scripts和Gizmos就好。该文章用的到API:    传送门:http://www.ceeger.com/Script/Gizmos/Gizmos.htmlPS:这篇文章相对简单,但克森还是会细致的介绍一遍,因为这篇文章也是该系列的一部分,如果有了解过的朋友可以忽略该篇。由上图可知
花了一晚上的时间终于看懂Image Effect中的Blur,其实很简单,就是一下子没有理解到。原理:使用两个一维[1*7]的高斯滤波模板,一个用在x方向,另一个用在y方向。高斯滤波有模糊的效果。js脚本参数:Down Sample:OnRenderImage中获取的图像进行降采样,其实就是把要处理的纹理变小。有利于加快shader运行速度。Blur Size:在使用高斯模板时,相邻像素点的间隔。
转载 11月前
168阅读
渲染阴影的过程一 渲染屏幕空间的深度贴图 (DepthTexture)在正向渲染里,unity会先用ShadowCaster这个Pass渲染一遍场景,得到一张深度贴图  (PS:延迟渲染,深度贴图和albedo specular之类在Deferred Pass里统一计算一并放在Gbuffer里,不会专门单独渲染)二 渲染光源方向的深度贴图(ShadowMap)然后unity会从
转载 2024-05-20 09:46:39
343阅读
1点赞
更新日期:2021年8月23日。Github源码:[点我获取源码]索引BorderFlow 边框流动思路分析流光区
原创 2022-12-13 14:34:28
1253阅读
种种原因鸽了很久…已经学到第九章了第六章的笔记还没写…那就当对初级篇的一个总结吧,防止篇幅太长,分3部分来总结~对于光照模型的讲解原书已经讲得非常详细了,这里就随便记一下咯…感觉这章对于萌新来说最重要的是从框架开始跟着敲,熟悉一下流程和常用函数、变量、语义没啥难度,但是基础很重要,这里熟悉了,后面代码感觉眼睛已经可以跳着看了emm总结开始! 标准光照模型在标准光照模型中,进入摄像机中的光
转载 2024-05-28 22:54:51
223阅读
What?? Shader,看起来好高级的样子,是的,这是Unity中高级进阶的必备。因此,兄弟我就在此记下我学习官网的一些心得。 一、概念篇 1.基准:unity里的shader并不是一门独特的语言,而是一种代码生成方式,且可将低层次且复杂的shader编程进行简化。但同时你也还是得使用Cg/HLSL来写的。 2.原理:写一个函数,以UVs或者一些数据为入口,然后以SurfaceO
1.透明度混合必须关闭深度写入,开启混合模式Shader"Unity Shaders Book/Chapter 8/Alpha Blend" { Properties { _Color ("Color Tint", Color) = (1,1,1,1) _MainTex("MainTex", 2D) = "White" {} //在透明纹理的基础上控制整体的透明度 _Alpha
转载 2024-06-27 21:55:12
90阅读
最近遇到了一个问题,角色在Unity编辑器里运行渲染结果都是好的,打包到IOS上却发现,角色身上渲染的很黑.花了些时间查了查,又试了试,把这方面算是初步弄清楚了。先说出现问题的原因,由于我们把shader打包进了AssetBundle中,并且在Shader中使用了shader_feature来定义了宏。为了完整起见,先从unityshader variant说起。ShaderVariant举个例
转载 2024-04-03 11:16:21
166阅读
一、数学内置函数1、Step(a,x):如果x<a返回0;如果x>或=a返回1 2、Clamp(x,a,b):如果x<a返回a;如果x>b返回b;如果在a和b之间就返回x 3、smoothstep(min,max,x):返回的值为–2*((x –min )/(max –min ))3 +3*((x –min )/(max –min ))2 4、lerp(a,b,f):线性插
转载 2024-05-27 20:24:56
240阅读
什么是ShaderVariant  在写shader时,往往会在shader中定义多个宏,并在shader代码中控制开启宏或关闭宏时物体的渲染过程。最终编译的时候也是根据这些不同的宏来编译生成多种组合形式的shader源码,说白了就是和if类似。其中每一种组合就是这个shader的一个变体(Variant)。Material ShaderKeywords与ShaderVariant  Materi
  • 1
  • 2
  • 3
  • 4
  • 5