随笔分类 - Shader
摘要:首先看一下点击Bake按钮后的执行流程: 1.AmplifyImpostorInspector部分 首先点击按钮设置了bakeTexture = true if( GUILayout.Button( TextureIcon, "buttonright", GUILayout.Height( 24 )
阅读全文
摘要:1.简介 随着Unity6的发布,URP17也已经可以上手使用,相对旧的版本改动较大的是加入了 RenderGraph、STP、Foveated rendering、GPU Resident Drawer等功能,部分功能只需要开关参数即可使用, 而GPU Resident Drawer好比BRG(B
阅读全文
摘要:图像色带(Band)问题一般出现在带有渐变的图像上,在影视上可以换成16bit的色深以解决, 而实时渲染领域通常对图像做色彩抖动处理来解决。但抖动这块一直没有找到很好的插件,PS也一直没有 相关教程。本文就自己动手丰衣足食;编写一个小工具来实现图像抖动,配合蓝噪声效果更佳。 2024/09/10补充
阅读全文
摘要:1.通过网上冲浪了解到,BentNormal可以解决间接环境高光漏光及间接漫反射光照漏光的问题。 这里的漏光是指间接光照部分没有考虑到模型自身的遮挡关系导致的漏光。 2.可以通过SD之类的软件烘焙BentNormal贴图,软件会根据余弦角向外计算各个角度可见性,最终求平均得到一个向量,会在之后的计算
阅读全文
摘要:在新版本的Unity中提供了MeshDataArray和MeshData等多个API,使Mesh数据操作支持多线程;以更好的支持DOTS。 API文档:https://docs.unity3d.com/es/2020.2/ScriptReference/Mesh.MeshData.html 1.IJ
阅读全文
摘要:在日常开发中会有需求合并多个Mesh网格,并且它们重合处的顶点也要合并,而并非合并成两个subMesh。 而近期刚好在学习Geomipmap的细分,需要把多个mesh块进行合并,于是写了这个脚本 (简单的情况下用Mesh.CombineMeshes也可以)。 见下图,多对象合并前后对比: 使用时传入
阅读全文
摘要:在Shader中处理流控制语句时,常加上一些宏去处理流控制指令。例如: UNITY_UNROLL for (int i = 0; i < 10; i++) { //do something... } 在buildin shader包中的CGIncludes\HLSLSupport.cginc中可以找
阅读全文
摘要:在使用大面积的平铺纹理时,会导致重复感较强的贴图呈现在画面中。我们可以通过许多方法进行优化,WangTile就是其中一种。 WangTile(王浩瓷砖)方法通过对每条边标记颜色,并在平铺时将相同颜色的边拼接在一起,最终铺满整个平面。 参考《GPU Gems2》中的做法,但这里使用一组预先设定好的可循
阅读全文
摘要:之前一直没有自己实现过阴影,只是概念上有所了解,这次尝试实际编写学习下。 Shadowmap主要思想是通过深度图可得到世界坐标位置,所以光源位置渲染一张场景深度图以得到光源位置像素点的世界坐标, 再对比主相机的像素点世界坐标,如果两个世界坐标距离小于误差则说明两者都能看见这个点,则这个点不在阴影内,
阅读全文
摘要:接上一篇:https://www.cnblogs.com/hont/p/10122129.html 除了Append类型对应的Consume/AppendStructuredBuffer还有一个Counter类型可以进行计数操作。 那么测试一下: computer shader: 测试的是Decre
阅读全文
摘要:上个月写了一篇使用像素shader返回累加信息的Trick:https://www.cnblogs.com/hont/p/9977401.html 后来无意中发现DX11/Compute shader有一类Append/Consume数据格式更适合这类操作。 c sharp脚本: using Sys
阅读全文
摘要:2018/12/14日补充:后来发现compute shader里用AppendStructuredBuffer可以解决这类问题,请看这里:https://www.cnblogs.com/hont/p/10122129.html 1.简介 在日常开发中会遇到诸如判断某张图的某颜色像素百分比占多少的问
阅读全文
摘要:涂抹还是满常见的效果。 要做涂抹,首先要存一张中间贴图作为mask。 然后需要两个shader,一个做mask一个做混合。 MaskShader: BlendShader: 脚本(核心部分): 2018/11/18补充:近期实现了对涂抹像素的判断操作,涂抹到一定程度后则完成擦除: https://w
阅读全文
摘要:之前GGJ实现了一个,但是实现方式上有很多冗余。今天正好在做一个类似的东西,重新做了一个版本 还是当时美术画的素材: 由于里表世界是不同的内容,是两张材质。所以拆分成不同Layer之后,里世界单独渲染一次 最后用Graphics做一下混合的屏幕处理即可。 脚本: Shader:
阅读全文
摘要:Texture3D 2021/2/28补充: 因为Unity RenderTexture3D转Texture3D并不是很方便,写了一个小工具: https://files.cnblogs.com/files/hont/Texture3DRtToTexture3D.zip Texture3D需要先在脚
阅读全文
摘要:似乎是在Unity5.4中开始支持GPU Instacing,但如果要比较好的使用推荐用unity5.6版本,因为这几个版本一直在改。 这里测试也是使用unity5.6.2进行测试 在5.6的版本里,Instancing不再是一个单独的shader,而是一个开关。 如果使用Instancing功能需
阅读全文
摘要:官方文档地址: https://docs.unity3d.com/Manual/SL-Stencil.html 参考博客: http://blog.csdn.net/onafioo/article/details/53943264 http://blog.csdn.net/u013833399/ar
阅读全文
摘要:使用自定义特性关键字,可以动态对Shader某一部分代码进行开关操作 shader(定义了KEYWORD1特性): 定义:#pragma shader_feature KEYWORD1 判断:#ifdef KEYWORD1 Shader "Custom/NewSurfaceShader" { Pro
阅读全文
摘要:1.GodRays MADFINGER/Transparent/GodRays 传统的上帝之光效果,有顶点变形,适用范围非常广。 另外维京村落demo中,还有一个粒子用的近处消隐效果:http://www.cnblogs.com/hont/p/5705240.html 补充: float3 view
阅读全文