文章目录思路实践在方向光的位置,放一个正交相机调整光源相机参数将光源投影空间的正交视锥体画出来投射阴影接收阴影改进超出Shadow map的默认为光照添加光照处理添加PCF柔滑整体边缘添加SDFs_Like效果添加柔和阴影边缘衰减到光照 MixToLightCommandBuffer版CSharp坑1坑2坑3坑4 - 已修正坑5坑6- 已修正坑7Shader尝试给半透明添加接收阴影待改进已实现
1、Shader是渲染流水线中的某些特定阶段,如顶点着色器阶段、片元着色器阶段等。在Unity中,我们需要配合使用材质和Unity Shader才能达到需要的效果,一个常见的流程是:①创建一个材质②创建一个Unity Shader,并把它赋给上一步中创建的材质③把材质赋给要渲染的对象④在材质面板中调整Unity Shader的属性,以得到满意的效果    在
转载 2024-03-10 20:09:23
148阅读
前言:  关于UnityShader方面的知识有很多,但真正能让读者读懂并很快上手操作的少之又少,在这里我简单介绍下关于Shader的一些入门知识,如有出入请大佬们多多指点!图形学的基础知识:  1.Unity游戏物体上需挂载Mesh Filter组件,Mesh Filter中存储一个Mesh网格(用于存储形成图形的所有三角面的顶点信息)。  2.Unity游戏物体上需挂载Mesh Rendere
今天一个本科小学弟问到一个matlab编程问题,说自己只是改了别人的一小段代码,结果程序运行就通不过。给他看了一遍代码,我也没有发现问题。在一个for循环里面,第一遍能跑完,跑到第二遍的时候就会在一句调用sum函数的地方提示错误,反复对比单步调试无果。还多次确认,sum函数本身并没有什么使用限制。后来突然灵光一闪,发现他的for循环里面用到一个变量名就叫 sum, 第一遍循环跑完后,sum变量进
转自本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。============================== 写在前面 啦啦啦~我又回来看书啦。文章开始说一些题外话。因为写博客和在群里比较活跃(为什么QQ给我的称谓是“吐槽”。。。我这么乖。。。),最近有一些朋友给我发邮件或者私信,很多
1、左手右手坐标系2、Unity 的模型空间与世界空间使用的是左手坐标系,Camera使用的是右手坐标系  3、一定要理解的两个矢量运算,他们是图形算法的必备良药,这里的理解不仅仅计算公式,是几何意义上的理解 1)点积(内积):从数学上想来,很容易联想到它能够计算余玄(cos),结果是一个标量,那么更进一步的几何意义是后者在前者方向上的投影,大部分数学库提供的函数名为
      游戏的UI开发中常常会遇到染色问题。比如button失效变灰的效果,同一个道具通过策划表配的颜色值染上红绿蓝紫等颜色,效果例如以下       最笨最挫的方法当然是让美术多出几个资源图。这种一个缺点是浪费资源,在手游上资源的大小显得尤为重要。并且不好维护和复用。改动一个资源须要同一
2010年的Unity 3 中,Surface Shader 出现了。表面着色器的一个例子。我们先做如下准备工作。1)新建一个场景,去掉天空盒子2)新建一个材质,新建一个Shader,赋给材质。3)场景中创建一个胶囊体,上步材质赋给它然后我们修改Shader代码:Shader "Unity Shaders Book/Chapter 17/Bumped Diffuse" { Properties
转载 2024-07-22 18:25:29
33阅读
1.Shader在什么情况下使用Particles/Additive(粒子/叠加)到了粒子系列了,之所以先写前面几篇是因为本shader中都用到了,篇幅有限,因此分了几篇来写。本文注释中有关INSTANCE_ID和软粒子的深度计算方法都没有搞明白,不懂的部分只能后面再深入研究了不能阻挡学习的脚步。2.Shader的价值(用的多不多),Shader的难度Additive应该是用的非常多的,难度非常大
转载 2024-04-23 08:02:26
132阅读
UGUI Gradient在处理图片、文本的渐变效果时,为了缩减包体一般会使用插件脚本来实现,进而避免使用更多的图片资源,在网上搜索 Unity 渐变效果,一般能找到的都是单向自上而下的渐变效果,源码出处已不可考,大家感兴趣可自行搜索,本文直接给出改进版本,支持设置两端颜色和渐变的方向(上下,左右,左倾斜,右倾斜)。实现效果源代码namespace UnityEngine.UI { using
转载 2024-03-23 11:39:29
435阅读
极端常用:UnityObjectToClipPos(v.vertex);最基本的顶点变换,模型空间 ==》裁剪空间 mul(unity_ObjectToWorld, v.vertex);顶点:模型空间 ==》世界空间,多用于顶点着色器 UnityObjectToWorldNormal(v.normal);法线:模型空间 ==》世界空间,多用于顶点着色器,float3(归一化后f
本节书摘来自华章出版社《Unity着色器和屏幕特效开发秘笈》一 书中的第1章,第1.8节,作者:(美)Kenny Lammers,1.8 使用2D渐变纹理创建假的BRDF我们可以在渐变纹理的思路上添加由光照函数提供的视角方向来创建一个高级可视化效果,利用视角方向我们能够生成一些模拟的边缘光照。让我们回顾一下前面的渐变纹理技术,我们仅仅使用了一个值来控制纹理的UV坐标,这意味着我们只能得到一个线性的
转载 2024-09-27 11:13:05
250阅读
目录目录Shader compilationConditionals in shadersDifferent types of conditionalsSwitch code branch at runtimeBranching in shadersStatic branchingHow to use static branchingDynamic branchingHow to use dyna
子类可以定义父类中的同名成员子类中的成员将隐藏父类中的同名成员 父类中的同名成员依然存在于子类中 通过作用域分辨符(::)访问父类中的同名成员 c.Parent::mi类中的成员函数可以进行重载1.重载函数的本质为多个不同的函数 2.函数名和参数列表是唯一的标识 3.函数重载必须发生在同一个作用域中子类中的函数将隐藏父类的同名函数子类无法重载父类中的成员函数 使用作用域分辨符访问父类中的同名函数
写在前面Unity的官方文档对graphview的api只有粗略描述,想要通过API来理解GraphView如何搭建,是非常低效和让人抓狂的。 也许是因为是实验API的关系,但个人感觉Unity的其他API也需要大量借助其他非官方资料和开源项目才能理解。下面进入正题:0 实现GraphView子类构造函数中,将EditorWindow作为参数传入以便后面使用另外我们需要添加一些功能函数SetupZ
转载 9月前
108阅读
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) = (
细节慢慢补充,有几个需要注意的地方,必须要有接收投影的pass也就是Name是ShadowCollector的,必须添加#pragma multi_compile_fwdbase,物体的着色器必须有Tag 里面的 {"LightMode" = "ForwardBase"}。处理投影要在接收投影的物体
转载 2021-07-17 17:18:32
269阅读
花了一晚上的时间终于看懂Image Effect中的Blur,其实很简单,就是一下子没有理解到。原理:使用两个一维[1*7]的高斯滤波模板,一个用在x方向,另一个用在y方向。高斯滤波有模糊的效果。js脚本参数:Down Sample:OnRenderImage中获取的图像进行降采样,其实就是把要处理的纹理变小。有利于加快shader运行速度。Blur Size:在使用高斯模板时,相邻像素点的间隔。
转载 10月前
168阅读
渲染阴影的过程一 渲染屏幕空间的深度贴图 (DepthTexture)在正向渲染里,unity会先用ShadowCaster这个Pass渲染一遍场景,得到一张深度贴图  (PS:延迟渲染,深度贴图和albedo specular之类在Deferred Pass里统一计算一并放在Gbuffer里,不会专门单独渲染)二 渲染光源方向的深度贴图(ShadowMap)然后unity会从
转载 2024-05-20 09:46:39
343阅读
1点赞
种种原因鸽了很久…已经学到第九章了第六章的笔记还没写…那就当对初级篇的一个总结吧,防止篇幅太长,分3部分来总结~对于光照模型的讲解原书已经讲得非常详细了,这里就随便记一下咯…感觉这章对于萌新来说最重要的是从框架开始跟着敲,熟悉一下流程和常用函数、变量、语义没啥难度,但是基础很重要,这里熟悉了,后面代码感觉眼睛已经可以跳着看了emm总结开始! 标准光照模型在标准光照模型中,进入摄像机中的光
转载 2024-05-28 22:54:51
223阅读
  • 1
  • 2
  • 3
  • 4
  • 5