- 博客(34)
- 收藏
- 关注
原创 Grain官方文档的一些理解
它的核心作用就是 在不修改 grain 本身代码的情况下,为 grain 的方法调用添加额外的通用逻辑。这可以让 grain 根据不同的客户端环境返回不同的数据或执行不同的逻辑。Orleans 提供了 可串行化 (Serializable) 的隔离级别,这是最严格的隔离级别,它保证了并发事务的最终结果与某个顺序执行它们的结果完全相同。这意味着流中的消息可以是持久化的(例如,使用 Azure Event Hubs 或 RabbitMQ),确保了即使在消费者离线或系统重启后,消息也不会丢失。
2025-08-18 20:17:00
934
原创 Unity Shader 参考文档 - 第四部分
经验描述分支尽量不要使用if或者switch去做大量的分支,否则在部分机型上会卡到怀疑人生!Stencil红米9C上开启深度图同时Shader中启用Stencil时会导致资源显示不可见,关闭任一个即可解决Semantics(语义)- 数据传递的关键字Properties(属性)- 材质面板中的可调参数Math(数学运算)- 常用的数学函数和运算BuildIn Variables(内置变量)- Unity提供的内置变量和函数。
2025-07-31 09:40:08
782
原创 Unity Shader 参考文档 - 第三部分
宏描述桌面OpenGL核心(GL3/4)VulkanDirect3D 11 9.x功能级别PS4平台,SHADER_API_PSSL同时也会被定义Xbox One所有移动平台(GLES/GLES3/METAL)Window、Mac和Linux桌面平台。
2025-07-31 09:39:34
925
原创 正则表达式学习
0-6]仅匹配从零到六的任何单个数字字符,而不匹配其他字符。同样,[^np]仅匹配除字母 n 到 p 之外的任何单个字符。在上面的例子中,我们可以使用模式^success来仅匹配以单词“success”开头的行,而不匹配行“Erro。多个字符范围也可以与单个字符一起在同一组括号中使用。使用方括号表示法时,可以使用短划线表示字符范围来匹配。重复 {m} 重复m ,{m,n} 重复m到n。答案也可以是[^b]og ,[hd]og。,通常用于匹配英文文本中的字符。收紧模式的一种方法是使用特殊。
2025-07-24 09:09:52
260
原创 shader入门基础-光照模型总结
本文内容主要参考 《Unity shader 入门精要》一书,旨在总结所学知识与加深个人理解,为了表示方便,与书中公式略有差别。
2025-07-23 09:07:15
245
原创 shader入门基础-透明效果四
可选参数为 RGBA 的任意组合以及 0,参数为 0 时,那么不会写入任何通道,但是会做一次深度测试,并将深度值写入深度缓冲区。设置 Front,朝向摄像机的渲染图元不会被渲染,设置 off 会关闭剔除功能,所有图元都会被渲染,这时需要渲染的图元数目会成倍增加,因此除非是用于特殊效果。由于透明度混合会关闭深度写入,想要得到正确的透明效果,渲染顺序是非常重要的,我们需要保证图元从后往前渲染。双面渲染的工作分成两个 pass,第一个 Pass 只渲染背面,第二个 Pass 只渲染正面,
2025-07-22 14:59:39
424
原创 shader入门基础-更复杂光照
延迟渲染路径适合场景中光源数量较多、使用前向渲染路径会造成性能瓶颈的情况下使用,延迟渲染中的每个光源都可以按逐像素的方式进行处理。延迟渲染使用的 Pass 数目通常就是两个,延迟渲染的效率不依赖于场景的复杂度,而是和我们使用的屏幕空间的大小有关。unity 会根据场景中各个光源的设置以及这些光源对物体影响程度,对这些光源进行一个重要度排序。其中,一定数目光源按逐像素方式处理,最多 4 个光源会按逐顶点方式处理,剩下按 SH 方式处理。常用的光源属性有光源的位置,方向,颜色,强度,衰减。
2025-07-22 14:58:28
449
原创 shader入门基础-复杂光照二
Unity 在内部使用了一张名为_LightTexture0 的纹理来计算光照衰减,如果对该光源使用了 cookie,则对应_LightTextureB0,通常我们只关心_LightTexture0 对角线上的纹理颜色值,(0,0)表示与光源重合位置的衰减值,(1,1)点表明了光源空间中所关心距离最远的点的衰减。场景中最重要的平行光开启了阴影,Unity 就会为该光源计算它的阴影映射纹理(shadowmap),shandowmap 本质是一张深度图,记录了该光源的位置出发。在片元着色器中计算阴影值。
2025-07-22 14:55:23
589
原创 shader入门基础-内置变量,标签,函数,光照模型
用于SubShader则会对所有Pass生效,用于特定Pass则对特定Pass生效。:材质的光泽度(gloss)或反光度(shininess)半兰伯特模型没有使用max操作来防止。和的点积为负值,而是进行了。指向光源的单位矢量,倍的缩放和再加上一个。
2025-07-22 14:54:49
830
原创 shader入门基础-动画
批处理会合并所有相关的模型,而这些模型各自的模型空间会丢失。我们需要在物体的模型空间下对顶点位置进行偏移,因此需要取消。根据视角方向来旋转一个被纹理着色的多边形,使得多边形看起来好像总是面对摄像机。广告牌技术的本质是构建旋转矩阵。为了避免使用模型空间的中心作为锚点,我们可以利用顶点颜色存储每个顶点到锚点的距离值。
2025-07-22 14:53:37
238
原创 shader入门基础-屏幕后处理效果
在摄像机中添加一个用于屏幕后处理的脚本,在这个脚本中,我们会实现 OnRenderImage 函数来获取当前屏幕的渲染纹理。高斯模糊需要调用两个 Pass,第一个 pass 使用竖直方向一维高斯核进行滤波就,第二个 pass 使用水平方向一维高斯核进行滤波。高斯核的维度越高,模糊的程度越大。不清楚屏幕亮度,饱和度,对比度的定义,这里参考了 csdn 博客,大家可以直接参考 @feilong_csdn。高斯是一个正方形大小的滤波核,其中每个元素的计算都是基于下面的高斯方程。亮度,对比度,饱和度的实现。
2025-07-22 14:52:43
313
原创 shader 非真实感渲染(Non-Photorealistic Rendering)
卡通风格渲染中的高光往往是一块分界明显的纯色区域,对于卡通渲染需要的高光反射光照模型,我们会 normalDir 和 halfdir 的点乘结果和一个阈值比较,若小于则高光反射系数 返回 0,否则返回 1。过程式几何轮廓线渲染,使用两个 pass,一个渲染正面,一个渲染背面,并让轮廓可见。基于图像处理的轮廓线渲染 ,例如使用 sobel 算子的边缘检测,缺点是无法检测深度和法线变化很小的轮廓线,例如桌上的一张纸。基于轮廓边检测的轮廓线渲染,上面的方法无法控制轮廓线的渲染风格。
2025-07-22 14:20:40
320
原创 shader入门基础知识七
switch ,break,default,goto 等关键字,这里不再尝试,下面对 if else 和 for while 进行尝试。如图,count=30 的时候我们把颜色赋值成红色,否则绿色,显示红色则说明前面的循环都得到了有效的执行。如图,我们对于模型坐标小于 0 的地方给与红色,大于 0 的地方给与绿色,得到的是渐变从红到绿的颜色。这里前面提过 cg 支持 bool,和相关的运算符,三目运算符也是支持的。原因是片元着色器的输入是对着色器输出插值后的结果,因此结果是渐变的。提到过,cg 不支持。
2025-07-22 10:59:24
117
原创 shader入门基础知识六
在矩阵中我们不能直接使用 xyzw,但是通过下标我们可以获取到对应的向量,这时候是可以使用 swizzle 操作的,如图我们使用的全是 x,因此对应的。是(0,1,0,0),因此是绿色的。这里我们使用 float2 的分量,并且 y 在前,x 在后,所以新的 float4。通过 swizzle 操作,可以将 float2,或者 float2 的分量重新组成其他的 float3,float4。这个时候 float2 的 x,y 分别是 1,0 新组成的 float4 则是(1,0,0,1)因此是红色。
2025-07-22 10:58:42
203
原创 shader入门基础知识四
shader debug 时用到的假彩色图像技术也是类似如此,通过将数据映射到[0,1]范围作为颜色输出到屏幕上,然后通过屏幕颜色来判断数据是否正确。创建如图所示 shader,并且创建一个材质,游戏中创建一个 cube,将材质赋给 cube,将得到如下所示的颜色。NDC 是一个长宽高取值范围为[-1,1]的立方体,因此 obj_pos 的分量取值范围也是[-1,1]颜色取值范围是[0,1],小于 0 的取 0,因此获得下图所示的颜色。
2025-07-21 19:46:34
344
原创 shader入门基础知识二
其中 2D,Cube 3D 3 种是纹理类型,了解这些后可以声明一个只有 Properties 的 shader,并在里面声明纹理和颜色属性,创建一个材质命名 HelloMat,将我们创建的 shader,这里我们在材质球中看到了声明的_Texture 属性和_Color 属性,那么我们如何再着色器中访问这些属性呢,更改这些属性并最后反应到材质,模型上呢。语义包含了一些属性,通过这些属性,我们可以方便的调整材质属性,并且在 shader 中访问这些属性。编写完成后我们将得到如下效果的材质球。
2025-07-21 19:40:43
763
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅