自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 深度写入Depth Write深度测试Depth Test 黑洞效果

深度写入:深度写入的功能是判断该材质是否会剔除后面的像素,所以只要开启的Depth Write不管是否为透明物体,都会根据Z来遮挡后面的物体。深度测试:是通过比较深度值,判断该材质如何去被剔除像素。虽然透明的材质不会开启Depth Write,但深度值Z不管是否为透明材质都会有,所以透明物体才会被前面开启了深度写入的材质给挡住。通过深度写入和ColorMask的功能可以实现一些特殊的效果,比如:黑洞的效果Depth Write On 写入深度并在地面上,这样可以遮挡地面...

2022-02-05 22:26:26 5270

原创 Unity 计算屏幕视口UV坐标的几种方法

屏幕坐标三种获取方式,得到的坐标可以用来采样图片。1.使用unity自动将顶点着色器中齐次裁剪空间下的posCS,转换到片段着色器中时得到的屏幕空间。struct v2f{ float4 pos:SV_POSITION;}v2f vert (adddata v){ o.pos = UnityObjectToClipPos(v.vertex);}fixed frag (v2f i):SV_Target{ //这里传入的i.pos必须是SV_POSITION

2022-01-04 19:00:01 4641

原创 Unity 模型上绘制贴图融合

首先功能是在Unity中能在任意的模型上实现类似unity自带的地形系统里的贴图绘制功能。能够支持最多4张自定义贴图的融合。源码是在微元素论坛上大佬写的,可以在论坛搜索下E3D MeshPainter这个插件。我稍微改了下并且融合到了自己的Shader中,这里记录下学习的过程。 主要原理是利用一张贴图(SplatMap)的RGBA通道,分别指定不同的模型区域。一个通道对应一套需要融合的贴图。为了优化效果,一套贴图只有两张图,第一张图的RGB通道存放固有色,A通道存放高度信息,A通道...

2021-10-12 18:45:06 2956

原创 DOTS支持的shader

最近项目需要用到DOTS的技术,发现除了程序部分需要做代码调整外,Shader的编写也需要进行一些调整,不然运行的时候会出些各种奇怪的现象,比如不显示模型,模型位置错乱等等。由于也在慢慢摸索,可能有部分写的不对的地方,请各位大佬指教。。。支持DOTS的Shader分为带骨骼的SkinnedMeshedRender和普通的MeshedRender,普通的MeshedRender实现的方式和普通的GPUInstancing类似,注意是必须增加Instance。增加变体:#pragma mult

2021-08-21 14:07:05 1582

原创 各项异性高光 Kajiya-Kay TDir or BDir

在做Kajiya-Kay各项异性高光的时候,我们会使用半角向量(hDir)和模型的切线方向进行点积。但有时候用切线方向的效果不正确,用副切线方向确有正确的效果。那么什么时候改用切线,什么时候用副切线方向?关键适合展UV的方向有关系。做个实验:首先我们建一个球体,并展UV,UV方向如下:选中黄色区域的面,对应的是模型上的这些面。一般切线方向为UV的U方向,所以这个球型的切线方向就是水平的,就应该用垂直的副切线方向作计算。如果我们将模型的UV旋转90°,则切线方向就是垂直..

2021-07-24 22:17:55 672 1

原创 Early-Z和Z-prepass

首先Early-Z和Z-prepass不一定会提高性能。但如果场景有很多半透明物体造成Overdraw或者很多物体没办法进行深度排序时,可以使用Z-prepass提高性能。Early-Z是在渲染管线内新增一个提前深度测试在片段着色器之前。(也可以加上模板测试的功能)Early-Z的一些限制:开启AlphaTest或者Clip/discard失效 手动修改GPU深度值也会失效 开启AlphaBlend失效(因为关闭了深度写入) 不能关闭DepthTestZ-prepass:额外

2021-07-19 22:49:32 435

原创 NDC空间(归一化的设备坐标空间)整理记录

- 在齐次裁剪空间的基础上进行透视除法(perspective division)或称齐次除法(homogeneous division),得到的坐标叫做NDC空间坐标。补充渲染流水线:模型数据-顶点着色 - 曲面细分 - 几何着色器- 裁剪 - NDC空间 - 屏幕空间- 光栅阶段 - 帧缓存其中曲面细分和几何着色器是可选项,而从裁剪空间---NDC空间---屏幕空间一般由底层帮我们自动完成。我们的顶点着色器只需要把顶点转换到齐次裁剪空间就可(就是一般所说的输出的positionCS)空间..

2021-06-27 12:37:34 13826 2

原创 Unity自带的Skybox增加旋转轴

Unity自带的Skybox增加旋转轴项目有个需求需要在自带的skybox只能Y轴旋转的基础上增加另外两个轴向的旋转。首先找到unityCG库中的默认skybox的Shader------“Skybox/6 Sided”看到其中关于Y轴旋转的关键代码 float3 RotateAroundYInDegrees (float3 vertex, float degrees) { float alpha = degrees * UNITY_PI / 180.0;

2021-05-25 18:28:14 258

原创 Unity URP渲染管线中的SRP Batcher合批

Unity URP渲染管线中的SRP Batcher合批Unity的URP管线中不同于之前的Building-In管线,提供了额外的一种性能优化方式:SRP Batcher合批。SRP Batcher的优势是,不需像静态、动态合批那种,必须使用相同的材质球,但相对于的Shader中也做了些改变,增加了CBuffer。我们可以选择自己的Shader文件查看此Shader是否已支持SRP Batcher。要使用SRPBatcher时,必须将定义的变量放在CBUFFER_START(UnityPerMa

2021-05-14 18:33:52 2920

原创 3Dmax Retopology最新自动拓扑插件

3Dmax Retopology最新自动拓扑插件3dmax新的自动拓扑工具Retopology,此工具可以配合Max自带的Subdivide修改器,使其发挥更加强大的作用。下面是使用此工具和Subdivide修改器的一次测试:1.新建5个简单布尔后的Box2.为5个box分别增加Subdivide修改器使用不同的细分方法3.分别增加Retopology修改器可以看到直接使用Retopology修改器的第一个布线还不是非常理想,会有扭曲等情况,最后一种使用过Variable Carvatur

2021-04-07 17:43:11 10304 3

原创 Unity 内置空间变化矩阵的使用

Unity 内置空间变化矩阵的使用Unity 内置矩阵:矩阵说明UNITY_MATRIX_Munity_ObjectToWorld模型变换矩阵:通常用于把顶点/方向矢量从模型空间转换到世界空间UNITY_MATRIX_I_Munity_WorldToObject模型变换逆矩阵:通常用于把顶点/方向矢量从世界空间转换到模型空间UNITY_MATRIX_Vunity_MatrixV视图变换矩阵:通常用于把顶点/方向矢量从世界空间转换到视角(相机)空间UNI

2021-02-27 23:09:13 2175 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除