shader
ruofeng133
技术美术
展开
-
Unity 批量替换物体shader
批量替换物体shader原创 2022-06-01 18:56:16 · 976 阅读 · 0 评论 -
Blender漏光问题
有可能是模型的问题尝试给模型加 细分着色器,就OK了原创 2022-05-09 14:24:37 · 557 阅读 · 0 评论 -
Unity 模仿UE4 节点 PixelDepthOffset
#if UNITY_REVERSED_Z depth = input.positonCS.z - (input.positonCS.z / input.positionScreen.w) * _IntersectionWidth * 20 * InterleavedGradientNoise(input.positonCS.xy, 0);#else float depthT = 1 - input.positonCS.z; depthT = de.原创 2022-05-04 22:12:39 · 1292 阅读 · 0 评论 -
Unity 关于透视投影视口变换
https://www.scratchapixel.com/lessons/3d-basic-rendering/perspective-and-orthographic-projection-matrix/projection-matrix-GPU-rendering-pipeline-clippingunity里的有个computeScreenPos的实现float4 ComputeScreenPos(float4 positionCS){ float4 o = positionCS .原创 2022-04-29 15:32:59 · 1776 阅读 · 2 评论 -
Unity Shader Dither
https://blog.demofox.org/2022/01/01/interleaved-gradient-noise-a-different-kind-of-low-discrepancy-sequence/输入一张图shader处理下half3 randomVal = InterleavedGradientNoise(IN.clipPos, 0);half3 col = tex2D(_MainTex, IN.uv + saturate(randomVal * float2(1.0/.原创 2022-04-28 20:20:34 · 2080 阅读 · 0 评论 -
Shader中Smoothstep和Lerp的区别
Lerp当AB0.6时half4 col = frac(length(IN.uv - 0.5) * _Thickness);col = lerp(_A, _B, col.r);SmoothStephalf4 col = frac(length(IN.uv - 0.5) * _Thickness);col = smoothstep(_A, _B, col.r);所以不仅是曲线的差别,当A,B一样时,可以认为smoothstep==step...原创 2022-04-25 23:08:51 · 859 阅读 · 0 评论 -
面片描边shader
如图http://clynamen.github.io/blog/2014/06/24/outline-in-unity-with-mesh-transparency/Shader "MyURP/Grid_EdgeHighLight"{ Properties { _BaseColor("Base Color", Color) = (1, 1, 1, 1) _BaseMap("Base Map", 2D) = "white" {} _.原创 2022-04-25 13:05:30 · 477 阅读 · 0 评论 -
Unity 关于双叶高光(Dual lobe Specular)
Next-Generation Character Renderinghttps://leegoonz.blog/2020/08/24/dual-lobe-for-skin-shader-by-urp/其实就是模拟了高频信息现在粗糙度的那张贴图只需要画低频信息就行了代码引用自 leegoonz完整实现UE4里也有, leegoonz大佬应该是做了优化这里我也做了些修改half3 DirectBDRF_DualLobeSpecular(BRDFData brdfData, half3 n.原创 2022-04-17 13:27:18 · 2575 阅读 · 0 评论 -
UE4 normalmap转到unity里错误
如图Unity正常的法线贴图应该是这样的(0.5,0.5,1)显然现在是(1,0.5,0.5)咋办呢,R通道和B通道互换就好了😀用sd换一下,完美解决原创 2022-04-12 22:24:17 · 1505 阅读 · 0 评论 -
Unity shader build 打包android和PC机显示效果不一样
做了一个次表面皮肤SSSS效果,发现PC正常,打包到andoird机上这个功能就消失了,很奇怪,下面写一个一一排除的过程CPU代码方面一开始以为是rendertexture dont care的问题,后来发现并不是这个问题,因为我是直接setGlobalTexture的,所以并不会区去关心rendertarget读写的问题,那就是GPU代码的问题了Shader方面打开renderdoc抓帧发现是Vulkan,貌似比opengl高级,直接用renderdoc调试的话会有点看不懂,不急我们直接编.原创 2022-04-09 22:05:59 · 8471 阅读 · 0 评论 -
URP renderfeature depth buffer为空的问题 depthattachment
花了我两天的时间才解决这个问题,记录下问题经过起因项目需要改渲染管线,在后处理之前插入一个后处理,然后特效再单独处理过程这里特效需要做深度测试,然后我用URP PostprocessPass抄来的代码发现depthbuffer丢失,如图:一片黑啊,绘制代码如下var colorLoadAction = RenderBufferLoadAction.DontCare;if (m_Destination == RenderTargetHandle.CameraTarget &&.原创 2022-03-27 17:31:39 · 1177 阅读 · 0 评论 -
Early-z和Z-prepass depth test
https://www.bilibili.com/video/BV1FK4y1u7iw?p=2传统流程 (逐片元测试)深度测试的逻辑深度测试的问题提前深度测试 (模板测试)Early-Z失效开启Alpha测试,或者clip/discard操作手动修改GPU插值得到的深度开启Alpha blend关闭深度测试Depth Test高效利用由近到远对物体进行排序使用Z-prepass双pass缺点: 无法动态批处理提前分离PrepassZ-prepass没.原创 2022-02-18 17:00:02 · 495 阅读 · 0 评论 -
radiance和irradiance
https://zhuanlan.zhihu.com/p/139468429偷一张图Radiance辐射(Radiance)或亮度(luminance) [公式] :是指一个表面在每单位立体角、每单位投影面积上所发射(emitted)、反射(reflected)、透射(transmitted)或接收(received)的辐射通量(功率)。Irradiance辐照度:在面积[公式] 的总辐射通量再偷一张图...原创 2022-02-03 13:31:25 · 2075 阅读 · 0 评论 -
关于图形学的高低频滤波Filtering
https://www.bilibili.com/video/BV1YK4y1T7yY?p=6高频部分- 头发低频部分- 脸右图 - 中间是低频,周围是高频图像中变化剧烈的部分是高频,缓和的是低频可以理解为高平部分是边缘部分低通滤波如图...原创 2022-02-02 19:03:44 · 678 阅读 · 0 评论 -
Unity pbr里的金属度到底是啥
https://zhuanlan.zhihu.com/p/304191958我们可以看unity srp的源码,里面用rider查找引用,就可以找到了我理解的是它是控制着高光项的反射强度,同时又影响着漫反射项看代码 half oneMinusReflectivity = OneMinusReflectivityMetallic(metallic); half reflectivity = 1.0 - oneMinusReflectivity; half3 brdfDiffuse = alb.原创 2022-01-26 11:07:48 · 3032 阅读 · 0 评论 -
Unity环境光 Environment面板
其实就是phong式光照的Ambient项,这个光很弱很弱,但是对质感的提升很大很大phong式光照Ambient + diffuse + specular其中Ambient大概占比10%?IBL (全局光)其中这两个分别对应着diffuse 和 specular,其实可以理解为IBL的部分https://docs.unity3d.com/cn/current/Manual/lighting-window.html可以的多看看文档会有收获原来这个light window是这么个东西,了.原创 2022-01-22 19:26:46 · 3124 阅读 · 0 评论 -
RenderFeature后处理
注意要插入postprocess之后,否者会被其他的renderTartget冲掉https://bzyzhang.github.io/2021/01/31/2021-01-31-%EF%BC%88%E5%8D%81%E4%BA%8C%EF%BC%89URP%E4%B8%AD%E8%87%AA%E5%AE%9A%E4%B9%89%E5%90%8E%E5%A4%84%E7%90%86%E5%AE%9E%E4%BE%8B/using UnityEngine;using UnityEngine.Rend.原创 2021-12-10 23:44:08 · 1653 阅读 · 0 评论 -
RenderFeature绘制指定物体
https://www.cnblogs.com/hont/p/14221019.html绘制指定物体public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData){ CommandBuffer cmd = CommandBufferPool.Get("FogOfWar"); // Draw tag "FogOfWar" object var de.原创 2021-12-03 11:16:51 · 1668 阅读 · 0 评论 -
renderdoc 抓google地图
之前一直抓不到 注入不上google,之后看了官方文档就OK了https://github.com/eliemichel/MapsModelsImporter/releases最后注意, chrome浏览器一定要全部关闭,再点那个快捷方式导入blender时会卡一下原创 2021-11-30 22:53:43 · 1337 阅读 · 0 评论 -
RenderDoc 抓需要操作的帧
有些画面需要操作才能抓到,这是可以用renderdoc 的延时抓帧,如按住才能显示想要的画面延迟个10s再抓就能抓到了原创 2021-11-30 19:29:55 · 1511 阅读 · 0 评论 -
Unity URP打包安卓shader报错 报红 变红
可能是没加lightmodel 如图原创 2021-10-30 23:03:47 · 3811 阅读 · 0 评论 -
Unity Shader debug查看变量property
shader 未property的变量默认不会在面板里显示,想显示怎么办?可以加上[HideInspector]在debug面板里查看原创 2021-10-26 11:46:58 · 706 阅读 · 0 评论 -
Unity Shader 获取屏幕坐标检测测试
v2f vert(appdata_t v){ v2f OUT; OUT.vertex = vPosition; OUT.screenPos = ComputeScreenPos(OUT.vertex); return OUT;}fixed4 frag(v2f IN) : SV_Target{ half4 color = IN.color * (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd); ..原创 2021-10-21 20:45:57 · 433 阅读 · 0 评论 -
unity shader 关于clip 溶解
小于0才会被clip掉if(value < 0)discardclip(smoothstepResult31 - 0.5);float noise = SAMPLE_TEXTURE2D(_Noise, sampler_Noise, i.noiseUV).r + 1;float smoothstepResult30 = smoothstep( _hardness , 1.0 , ( noise - _Dissolve ));float4 lerpResult13 = lerp( _.原创 2021-07-07 13:18:13 · 880 阅读 · 1 评论 -
Unity Texture2D 拼接图片保存R通道B通道互换的问题
https://stackoverflow.com/questions/15853050/c-sdl-opengl-loaded-images-colors-are-inverted貌似图片存储方式就是用BGR顺序存储的,opengl在读取的时候会自动转换为RGB解决方法再换回来就好了for (int x = 0; x < origin.width; x++){ for (int y = 0; y < origin.height; y++) { var color = o.原创 2021-06-29 14:01:24 · 712 阅读 · 2 评论 -
视差贴图(Parallax Texture)
https://bzyzhang.github.io/2020/11/29/2020-11-29-%EF%BC%88%E4%B8%89%EF%BC%89%E8%A1%A8%E9%9D%A2%E5%87%B9%E5%87%B8%E6%8A%80%E6%9C%AF/https://www.jianshu.com/p/fea6c9fc610f这里要感谢一下我的同事,这是他的博客 https://bzyzhang.github.io/简介视差贴图是表面凹凸技术的一种,原理是通过利用一张高度图去偏移UV.原创 2021-06-28 10:20:17 · 2180 阅读 · 0 评论 -
关于修改别人代码的小技巧
不要瞎看,一定要弄懂原理,多找参考一定要弄清原理,化繁为简如果觉得别人的代码不合理,但结果正确,直接修改成你认为合理的,结果正确的,再去修改原创 2021-06-22 14:23:22 · 2262 阅读 · 0 评论 -
Unity FBX自动设置layer层
直接在Postprocess里搞就行,没想到fbx还是可以设置layer的void OnPostprocessModel(GameObject g){ var exampleAsset = AssetDatabase.LoadAssetAtPath<OutlineDirSetting> (assetsScriptsNewOutlineDirSettingAsset); bool IsProcess = false; IsP.原创 2021-06-04 15:20:48 · 421 阅读 · 1 评论 -
Python拼接图像 Pillow
拼接指定的图像from PIL import Imageimport osdef GetFileFromThisRootDir(dir, ext=None): allfiles = [] needExtFilter = (ext != None) for root, dirs, files in os.walk(dir): for filespath in files: filepath = os.path.join(root,.原创 2021-05-20 20:04:41 · 645 阅读 · 0 评论 -
Unity shader Fit函数重映射
顺便再加一个Toggle开关shader feature 比 muti更省[Toggle(_IS_GRADIENT)] _IsGradient("IsGradient", Float) = 0...#pragma shader_feature _ _IS_GRADIENT.....// height gradientfloat gradient = remap(IN.modelPos.y, _RemapMin, _RemapMax, 0, 1);half4 r = 1;#.原创 2021-05-10 15:33:05 · 569 阅读 · 0 评论 -
Unity shader的一些坑
各种奇怪的问题,法线啊,裁剪啊,透明度啊LightMode 一定要设置 还有 fwdbase fwdaddbunpscale不生效加上 #pragma target 3.0include文件打不开文件名对么?文件名对么?文件名对么?原创 2021-04-30 19:28:07 · 366 阅读 · 1 评论 -
Unity translucent SSS 次表面散射 皮肤材质研究
https://www.zhihu.com/question/265769844/answer/299073168https://www.jianshu.com/p/a1de93d2dcb7记录一下吧大概原理是当光线从后面照进来的时候,中间是黑的,外周围是亮的,很像边缘光,但是明暗过渡又很微妙,所以硬要模拟的话,美术可以手绘一张贴图去控制皮肤的强弱,通透度。否者只能模拟一下这种效果,很奇怪,????还是要加maskShader "Unlit/UnityBRDFSkin"{ Prope原创 2020-12-16 21:06:26 · 5845 阅读 · 1 评论 -
Unity PBR学习(二) 一个简单的IBL
上一篇文章我们说了 BRDFhttps://blog.csdn.net/A13155283231/article/details/111665581这篇来说说IBL部分 (虽然也是复制粘贴????)直接跳过lightmap部分哈引入这部分就没啥公式了,我的简单理解就是Unity内置的Standard的IBL就是利用三个元素cubemap (由probe采样得到,存入unity_SpecCube0)mipmaproughness然后利用反射公式采样那张贴图(cubemap)利用原创 2020-12-31 21:23:13 · 967 阅读 · 0 评论 -
Unity PBR学习(一) 一个简单的BRDF
环境是Unity2019.4.4 ,抄了一个第一档的BRDF,在此记录一下先从直射光部分(direct light)开始吧公式是在我的另外一篇里有然后就是复制了一下 里的部分内容其实就是 一个 diffuse项加specular项,最后我简单的架权平均了下????不知道对不,看起来差不多。最后上代码Shader "Unlit/MyBRDF"{ Properties { _MainTex ("Texture", 2D) = "white" {}原创 2020-12-25 11:09:15 · 1004 阅读 · 0 评论 -
Unity Shader Graph获取光照方向
这种代码和节点结合的方式也挺不错的,哈哈????,可能后面会改进吧https://blogs.unity3d.com/2019/07/31/custom-lighting-in-shader-graph-expanding-your-graphs-in-2019/?_ga=2.75716309.1595341088.1607915450-1061131448.1551936980#comment-417933后面还有可以从文件获取的方式,也挺不错#if SHADERGRAPH_PREVIEW D原创 2020-12-16 10:30:36 · 5873 阅读 · 2 评论