
入门图形学之C for Graphic
文章平均质量分 74
羊羊2035
deepseek和chatgpt更能让你我进步
展开
-
C for Graphic:视差渲染(一)
需要注意视点和起始终止相对坐标和texture3d采样配参一致,同时注意因为texture3d的储存方式从0号纹理开始已经有0.5的插值预留,所以我们进行zdimension计算的时候,用0.5的偏移做精准采样,避免模糊。我早期工作,在小作坊全栈的时候,做过一段时间web开发,做了一个古董藏品的h5展示,做法是360度拍摄各个角度的照片,然后在js中通过用户滑动屏幕切换不同角度的古董照片,模拟3d渲染的功能。缺点:采样纹理过大,所以想要达到正向效果,必须采样的对象是超精细场景或模型,不然得不偿失。原创 2024-10-17 17:26:50 · 659 阅读 · 0 评论 -
C for Graphic:径向模糊
原理:获取中心点(centeruv)到当前像素(pixeluv)的朝向法向量(ndir),pixeluv沿着ndir进行向前向后的像素颜色采样,并叠加到当前像素颜色(pixelcolor)以pixeluv为起点,ndir为朝向,向外、向内、或两端同时采样颜色进行叠加,为了保证叠加后亮度的统一,除以采样次数进行衰减即可。和以前聊过的高斯滤器模糊有点类似,核心都是将其他像素颜色叠加到当前像素颜色,无非叠加的计算规则不同。径向模糊(也叫辐射模糊):一种由内向外发散的模糊的效果。后处理着色器,原理就是叠加颜色。原创 2024-10-14 19:54:13 · 375 阅读 · 0 评论 -
C for Graphic:DNF手游残影效果
dnf手游操作里,按两下后跳,就会朝着操作方向快速闪现,同时出现滞留残影,有时候会发生一个残影一直滞留的bug,满屏幕到处跑会产生满屏幕残影,可见dnf开发人员加班挺凶的,很多bug估计来不及修。dnf手游在作死的道路上越行越远,困难罗特斯完全打不动,提前在抖音上细看攻略,基本能躲过机制不死,但是伤害不够,全时打满也还剩3000+管血,组团半天+炸团半天=完全浪费一天。个人觉得策划完全没必要这么逼氪,毕竟才开服四个月,就马不停蹄的想逼玩家氪金,可见游戏后续发展基本玩不下去,最后记录一下用得上的功能就退游。原创 2024-10-01 20:21:31 · 524 阅读 · 0 评论 -
C for Graphic:Sliced Circle Image
unity circle filled image原创 2024-01-16 18:02:38 · 567 阅读 · 0 评论 -
HDRP图形入门:RTHandle未知问题
当时没感觉有问题,后面同事说这效果好奇怪,好黄?起初我以为我shader颜色计算出问题了,查了半天不是。我百度google查了仅有不多有关RTHandle的帖子,并没找到相关问题,不过有个博主说复制一份RTHandle使用,我尝试做了一下,果然ok了。我自己把它理解为一个动态的RT,和RT一样的使用,当然写代码用起来很容易。正好电脑看奥本海默,全程尿点十足,就一边看一边把之前整合HDRP遇到的问题说一下。如果大家写渲染功能,碰到类似的问题,不妨Copy一份RTHandle。原创 2023-11-16 20:49:08 · 904 阅读 · 0 评论 -
HDRP图形入门:HDRP渲染管线depth翻转
HDRP图形渲染管线入门原创 2023-11-12 12:42:43 · 406 阅读 · 0 评论 -
入门图形学:VR畸变后处理
最近真的忙,项目需求大改,晚上还要复习成人英语考试。 新增了“一键生成VR”需求,在现有框架上预编译同步普通键鼠和VR手柄的操作、同步PC和VR的各种接口使用等,业务开发人员通过派生、调用新的基类和API做流程功能,然后使用编辑器功能一键生成VR和PC双端场景并完整运行,同时业务功能也是大改,日边还回响部门领导对我们项目经理喷的“都是错的!做的都是错的!!!”。&原创 2022-04-23 23:37:31 · 2584 阅读 · 1 评论 -
入门图形学:图形喷涂(一)
最近想实现一系列的喷涂绘制功能,感觉挺有用的。 首先就是普通的喷涂绘制,利用材质纹理进行绘制操作,如下: 假设上面是纹理uv,我们鼠标射线击中muv,根据radius算出绘制的外接矩形rect,然后根据圆弧到圆心距离判断进行圆形涂色。这里唯一需要注意的就是纹理像素的边界问题了,不要越界,如下:原创 2022-02-13 20:48:32 · 830 阅读 · 3 评论 -
入门图形学:动态地形(一)
要搞一个无限动态地形,本来这种和场景相关的功能我都是不管的,美术同事搞个插件即可,毕竟专业人员。 不过同事搞的插件有问题,在地形拼接对不齐,改拼接参数也改不好,于是任务落我头上了,刚好...原创 2022-01-07 15:36:36 · 2365 阅读 · 0 评论 -
入门图形学:UI抗锯齿
刚好需要解决一下UI抗锯齿的问题,顺便记录一下。 比如如果绘制了这种多边形: 使用CanvasRenderer绘制(以前聊过不再赘述),可以看得出来锯齿挺严重的,所以需要使用抗锯齿技术。 一般我们设置全局抗锯齿都是基于最终画原创 2021-12-06 20:49:53 · 2310 阅读 · 0 评论 -
入门图形学:图像二值化
最近要做图像处理,二值化处理,顺便来记一篇博客。 在图像处理上,一般的图像(彩图)携带信息过多,用于计算处理方面就不适合,需要将图像进行灰度化->二值化。 1.灰度化 图像编码分为RGB、YUV两种常用的编码方式,一般原创 2021-10-31 23:32:11 · 4334 阅读 · 1 评论 -
几何向量:Gerstner
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-10-06 16:02:19 · 681 阅读 · 2 评论 -
入门图形学:Texture3D
这次我们学习一下texture3d(又名三向纹理贴图,3d纹理贴图等)。 照例先上官方: 百度百科 UnityManual MicrosoftDocs原创 2021-09-12 12:17:50 · 5237 阅读 · 0 评论 -
入门图形学:雪地特效(一)
黑神话悟空里面的雪地感觉就是个活的,交互效果非常好,如下:这雪地,动一下凹一点,配合角色的动作,显得就很灵动。当然雪地的效果实现原理不难,高度贴图+曲面细分就能做出来,我之前做的角色面部造型(捏脸)就类似这种效果,下面先简单的实现一下。...原创 2021-09-06 22:00:41 · 3059 阅读 · 2 评论 -
入门图形学:武器光波特效
再次安利一下这个视频,黑神话悟空这里面战斗都太秀了,难度我凭观看感觉和黑魂血源有的一拼,我感觉我是打不过的,黑魂3的古达就把我虐死二三十次,血源更不说了,小怪我都打不赢,所以还是来实现一下其中的特效,以后可能用到我的游戏中。这次我们就来实现一下战斗中武器挥动的光波特效,如图:...原创 2021-08-28 15:29:49 · 2967 阅读 · 3 评论 -
入门图形学:屏幕波爆特效
最近bilibili看了黑神话悟空的UE5演示视频,感觉是真牛逼,地址:黑神花悟空UE5实机演示视频遥想我也算是国内第一批用ue4的开发者了,15年开始用ue4.7源码版,做了一年多就又用回u3d了,哈哈,主要因为ue4不知道为何总是很慢,从c++模板工程开始编译启动慢、umap大了保存慢、c++compile慢、shader compile慢、打包编译就更慢了,还进行exit with code 0。不知道ue4或者ue5现在改版怎么样了,应该已经解决上面的问题了吧。言归正传,我看完黑神话悟空的视频原创 2021-08-23 21:36:15 · 644 阅读 · 0 评论 -
C for Graphic:Ugui CanvasRenderer Effect
前几天没想准备做点ugui效果就又找到unity的bug了,那就是和上一篇相关,我想对ugui line制作一些简单的动效,结果发现uivertex的uv字段不生效,同时发现FillMesh函数也无效,那么对我来说Graphic.OnPopulateMesh就没用了,我得抛弃。下面来详细说明一下我碰到的问题:我想给绘制的line加上shader动效,所以需要uv0参数,我按照如下图计算出uv0:代码如下: /// <summary> /// 获取每一段“线段”的长度原创 2021-07-06 20:36:39 · 287 阅读 · 3 评论 -
C for Graphic:Ugui Line
最近个人项目中有写一个ugui的画线组件,水一篇博客算鸟。现在正在做一个好玩(个人觉得)的项目是纯二维的,我就直接用的ugui去写的,因为本身我已经四年没怎么做ui了,虽然市面上的gui插件都比ugui好用,组件丰富,功能齐全,但是我也没用过也不太会用。所以就需要什么实现什么算了,下面就来说一下ugui中line的实现方式之一。我们知道三维引擎中一切渲染皆是几何数据:点线面纹理材质等,ui也一样,都是世界空间中的几何数据。我们知道unity提供的linerenderer和tailrenderer可以在世原创 2021-06-29 10:48:39 · 469 阅读 · 0 评论 -
C for Graphic:Ugui Text Background
最近做个人项目,同时每天学下英语,所以都没写博客了。昨天被qq群友问了ugui text的问题,刚好觉得这个需求挺普遍的,就是给text做一个匹配的背景色。 这种需求我以前做ugui经常碰到,当时都是ui给我一个九宫格图片,我根据text实际的width和height做一个bgimage的分辨率适配,但是昨天群友的需求有限定条件: 1.不想用uiimage控件做背景 2.文字背景最好能中间一段换个颜色 这需求我想了想,也不算是挑剔啊,在web开发中,这类文字背景色变化...原创 2021-06-22 11:38:43 · 293 阅读 · 0 评论 -
入门图形学:ComputeShader
这里学习一下Compute Shader,顾名思义就是用于计算(Compute)的Shader。 一般情况下,我们写跑在GPU上的shader都是为了特定的渲染效果,而做运算则用c#CPU去处理。但是GPU的运算能力,特别是浮点数运算能力强于CPU不止十倍,CPU则在逻辑处理能力上强于GPU。那么如果我们碰到低逻辑判断高运算需求的情况下,如果能用上GPU运算,那就可以节省很多时间了。比如AI模型训练,基本都是在GPU上跑算法,我们做视频图像识别卷积运算,用CPU去干这事,基本卡...原创 2021-01-06 22:36:50 · 5653 阅读 · 2 评论 -
C for Graphic:卡通头发
卡通头发也有一个渲染上的特点,俗称”天使环“,就是头发上有一圈圆环高光。原创 2020-12-27 20:58:21 · 923 阅读 · 0 评论 -
C for Graphic:ddx/ddy
最近有被群里好友问ddx/ddy的问题,所以就来记录一下。 ddx(a):returns approximate partial derivative with respect to window-space X(返回屏幕空间坐标x的近似偏导数) ddy(a):returns approximate partial derivative with respect to window-space Y(返回屏幕空间坐标y的近似偏导数) a:V...原创 2020-11-01 19:27:17 · 1490 阅读 · 2 评论 -
C for Graphic:卡通眼睛
卡通渲染中,眼睛的着色效果也是一大特色,所谓“双眼有神”,也是视觉上的一个褒义特点。 这里我们就来看看卡通眼睛渲染的效果,我还是找原神的截图:原创 2020-11-08 21:41:24 · 746 阅读 · 0 评论 -
C for Graphic:卡通光照
最近出了个游戏很火,叫原神,我特意下载玩了几天,可以说除了内容不好玩之外其他全都达到了卡通游戏画面标杆,当然其吸金能力还是顶呱呱的。 因为近四年来职位是客户端主程而不是TA,所以我只是写一些项目中需要的功能性或玩法性shader。而主要的模型材质、场景烘培、后期特效、渲染风格还是由美术用3dmax、substance、zbrush、aftereffect去搞,我就老老实实业余时间学blender就好。不过我最喜欢的还是卡通风格的游戏,当然我不是美术艺术方面院校毕业的,所以只能浅...原创 2020-10-14 22:11:11 · 375 阅读 · 0 评论 -
C for Graphic:3D Printing
前几天同事问我怎么实现3d打印效果,通常做法就是根据网格顶点的建模空间(或者世界空间)坐标进行判断(一般通过Y的值)是否discard,实现如下:Shader "3DPrint/3DPrintVertexShader"{ Properties { _MainTex ("Texture", 2D) = "white" {} _WorldVertexClip("World Vertex Clip",vector) = (0,0,0,0) ...原创 2020-10-01 22:36:32 · 418 阅读 · 0 评论 -
C for Graphic:Geometry Grass
最近搞荒野之息,每天玩到十一二点,睡眠扛不住了。 荒野之息这游戏有个特点就是野外漫山遍野的青草,这对于图形性能是个严格的考验,当然这漫山的草可不是我们通常用地形刷刷上去的那种,因为这个密密麻麻的数量级,不论是静态批处理还是动态批处理亦或者GPUInstancing全都不顶用,因为这三种操作必须经过渲染流程的应用阶段,而这个gameobject数量级毫无疑问可以爆掉CPU了。 闲来无事逛google,偶然看到一片关于geometry shader处理大量草体...原创 2020-10-05 21:25:41 · 374 阅读 · 1 评论 -
C for Graphic:GrabPass(GrabTexture)
最近学了一个月车,马上要考科目二了,之前每周都去练车,都没时间学习了。 不过最近需要做一个效果,所以记录一下实现原理。 主要使用GrabPass,这是个特殊的shader pass,作用是抓取即将被绘制到屏幕的纹理,让我们开发者用于开发一些着色效果,官方解释:Unity GrabPass 下面我们简单使用一下理解其作用:Shader "Grab/GrabUnlitShader"{ Properties { ...原创 2020-08-15 14:13:06 · 618 阅读 · 0 评论 -
C for Graphic:CommandBuffer血量图
最近618买了个机械师蓝牙游戏鼠标,日常使用几天感觉还行,就把CF安装了,每天玩两把试试身手。 CF每次结束游戏会弹出直播,直播是以主持人上帝视角(可切换人称视角)进行的, 其中有个shader效果很经典,基本上流行的大中型的FPS游戏都有使用:就是角色血量透视展示。...原创 2020-06-26 21:02:45 · 460 阅读 · 1 评论 -
C for Graphic:CommandBuffer透视镜
最近和深圳老同事聊天,感觉都老惨了,本身都是做游戏出生,结果游戏公司版号、资本问题搞的各种花式降薪裁员,玩的比较好的一个同事找工作千难万难最后面进了一个VR公司,做医疗手术类型VR程序。功能中要做一个透视镜效果,他搞不定,让我帮忙解决,因为刚好用commandbuffer来做就很简单,所有记录一下。 要求功能就是有一个检测仪,扫描人体皮肤表面可以观察到内部骨骼的x光渲染画面,话说有这种仪器吗? 不过这种效果不算复杂,我们以前也都学习过,无非就是几种效果原理的叠加...原创 2020-06-20 22:45:42 · 473 阅读 · 0 评论 -
C for Graphic:CommandBuffer外描边
这一篇聊一聊最近一个功能需要使用CommandBuffer,还是工作上碰到的问题,原始需求很简单:就是用户操作人物角色在场景中四处寻找物体,在靠近需要拾取的物体,则给物体一个外发光描边,或者用户不知道该怎么做了,给予当前流程的拾取物体一个外发光描边的提示效果。 这一类功能其实很常用,而且也不难,我们以前也学过,可以返回去看。无非就是给物体一个基于顶点法向量dot视口向量的阈值做边缘光,或者基于法向量膨胀模型做前向裁剪渲染,渲染出描边效果。 当然我们还有一种方法就是深度偏...原创 2020-06-10 09:50:47 · 651 阅读 · 0 评论 -
C for Graphic:各向异性(anisotropy)
最近做一个效果涉及到各向异性着色,顺便记录一下。 各向异性,如果刚听过这个词的人,可能觉得绕口难懂,它的英文名:Anisotropy。它是各同向性(Isotropy)的反义词,各向同性这个词在第一次接触的时候就稍微好理解一点,就是各个方向矢量朝向相同嘛。那么前面带个AN的各向异性就是各个方向矢量朝向不同。 先贴上wiki百科吧:wike各向异性-中文 非均向性(anisotropy),或作各向异性,与各向同性相反,指物体的全部或部分物理、...原创 2020-05-17 21:17:25 · 3429 阅读 · 0 评论 -
C for Graphic:删格绘制直线和多边形
最近年底没什么事情,要过年了嘛,放个大年假。我又捡起基础数学书看了,本来一直在看微分定积分偏微分计算,不过目前对于我来说应用场景不多,比如定积分和偏微分,在求面体积和数值分析方面大有可为,领域偏向于工业和研究领域,我还没想到怎么应用到我的日常开发中,如果我做教学软件就好了,数学施教类应该用的挺多(当然高级别的着色效果也用到微积分,主要还是我太水,知识深度和应用深度都还不够,估计还得...原创 2020-01-17 15:18:25 · 448 阅读 · 1 评论 -
C for Graphic:MacOS纹理动画
年底了公司展开了一年的工作总结,我同时整理了一下自己的开发框架,整理到ui框架部分顺便想扩充一下动画系统。一直以来我都是用animationcurve+tween去做启动关闭动画,比如坐标移动、大小缩放等。同时市面上大部分应用和游戏也是这种效果,不过仅限于windows系统,如果是mac系统,它那个特有的隐藏显现的动画就很常见了,效果如下: 这效果看起来还可...原创 2020-01-03 16:54:56 · 420 阅读 · 0 评论 -
C for Graphic:geometry vertex to cube
最近晚上在玩3ds路易鬼屋2暗月,其中路易进出鬼屋和实验室的效果有点意思,就是路易身体网格顶点变成立方体,然后穿越屏幕,跟老式科幻电影中人体变成数字信号一样,效果图如下: 原本我以为这些效果都是美术做的particle animation,后面突然想到其实用geometryshader就可以实现(如果不知道geometry的同学可以返回之前看一下,有个大概...原创 2020-01-09 13:12:35 · 266 阅读 · 0 评论 -
C for Graphic:顶点片段变色
今天中午深圳老同事问我怎么搞模型逐渐变色,他们策划需要模型有个变色的过程,他自己就只在c#中做Color.Lerp,达不到要求,周六被拉着加班。我也正好在家里做自己的小游戏,所以帮他写了两个,原理无非是顶点或者片段依次变色就好了。想着这需求还挺常见的, 就水一篇博客。 如果我们使用的顶点着色,也就是顶点赋值颜色,则只需要依次修改顶点的颜色就好了,如下: 首先写一个...原创 2019-12-14 15:25:57 · 225 阅读 · 0 评论 -
C for Graphic:屏幕特效黑暗明灯
三角力量2我已经玩到黑暗宫殿,黑暗宫殿得全靠打着灯火前进,而可视范围就灯火照亮的圆形,不得不说塞尔达传说是神作,完爆我玩过的任何游戏。 已经玩了一半多一点了。 3dsll的机能就那么一丢丢(比能开方算三角函数的计算器也就高那么一丢丢),所以我们使用点光源去挂在灯笼上可能会导致帧率下降,这时候使用屏幕特效处理是极好的。 如果我们把...原创 2019-11-25 11:02:39 · 293 阅读 · 0 评论 -
C for Graphic:屏幕特效像素画
双十一从同学手上搞了台3dsll,又开始猛肝塞尔达传说(时之笛/假面/三角力量2)了,每天晚上六点半到家吃个饭七点开始搞到凌晨一点钟,真尼玛扛不住。 刚拿到3dsll的那天和我的老小三对比了一下,上屏分辨率不变(双眼400*240)尺寸增大到4.8英寸,下屏幕分辨率也不变(320*240)尺寸增大到4英寸,在不开裸眼3d的情况下,就跟回到了诺基亚塞班手机的年代一样...原创 2019-11-20 17:37:16 · 690 阅读 · 0 评论 -
C for Graphic:mask遮罩
最近qq上有朋友问我shader遮罩处理怎么写,想着mask遮罩挺常用的,顺便水一篇博客。 我们小时候都戴过面具吧,面具遮住脸,露出我们的眼睛鼻子,就是一个现实中遮罩的效果。 而计算机中呢?qq微信头像的选择也是遮罩,选取一张矩形图片,叠加qq微信的头像遮罩模板(也就是矩形“面具”上面开一个圆形的“眼睛鼻子”空洞),把矩形图片的非圆形“边角料”遮罩掉。...原创 2019-11-16 13:03:47 · 566 阅读 · 0 评论 -
C for Graphic:网格描边特效
实际上如果我们完整经历过之前的学习,可以说shader着色器对于大家来说完全就算入门了。后面的着色器效果实现,可以自行研究,或看书或看源码等学习。 之后呢我会持续更新一些常用、炫酷的shader实现,从简单到复杂,从单一到复合,从我已经写过的到未来见识到的(基本上更新到不搞这一行了,上百篇应该是有的),这里来一篇最最最常用的shader。 ——网格描边...原创 2019-01-18 14:58:51 · 574 阅读 · 1 评论 -
C for Graphic:法线映射
最近现实中事情太多了,都隔了好长时间没更新博客了,不管怎么样,一个人一生真正的爱好不多,既然发现一个自己热爱的东西,那么还是要坚持下去的。 继续回归CG着色知识学习。 之前我们了解了线性代数中转置矩阵和逆矩阵的定义以及切线空间和法线变换,知道了法线变换的一个特点,那就是需要使用顶点变换矩阵的逆转置矩阵同步变换,才能得到正确的世界空间的法向量,这里又扩展...原创 2019-01-14 21:55:36 · 645 阅读 · 2 评论