UE实时渲染基础2 - 着色器和绘制调用
前言在上一篇中我们详细介绍了实时渲染中计算渲染对象的位置信息的过程,在这一篇中,我们将进入实时渲染的重要环节 —— 着色器和绘制调用
请检查以下概念是否了解,可以回顾上一篇的内容
渲染过程是如何把整个世界的对象识别出来的
渲染过程是如何计算视口/屏幕上应该显示哪些对象的
关键词
Prepass / Early Z pass 预通道/前期深度Z通道
Vertex ShaderS 顶点着色器
Pixel ShaderS 像素着色器
DrawcallS 绘制调用
看完本篇内容你将对以下概念心中有数:
什么是 Shaders/着色器,怎么理解这个概念
考虑顶点着色器的性能优化
考虑像素着色器的性能优化
01 Shaders 着色器着色器是渲染领域的专有技术,总之它是一种针对渲染的代码段,告诉GPU怎么去绘制每一个像素。
着色器目前主流的有三种语言:
基于 OpenGL 的 OpenGL Shading Language ,简称 GLSL
基于 DirectX 的 High Level Shading Language , 简称 ...
UE实时渲染基础1 - 延迟渲染过程
前言关键词:Deferred Rendering 延迟渲染Frame 帧Occlusion Culling 遮挡剔除
看完本篇内容你将对以下概念心中有数:
实时渲染分为 前向渲染 Forward Rendering 和 延迟渲染 Deferred Rendering ,如何认识这两个概念
延迟渲染 Deferred 过程中每一帧在计算什么
遮挡剔除 Occlusion Culling 为什么重要,如何结合实际情况组合解决方案
01 前向渲染 or 延迟渲染?
首先重要的是需要理解这么一个过程,每一帧画面的渲染,其中包含对几何体本身的计算,它的形状、位置,还包含受复杂影响的计算,它受光照后的着色和材质。对于前向渲染来说,这两大块在同一环节计算,而对于延迟渲染来说,先进行几何体计算,再进行渲染光照结果混合的计算。
所有的特性都围绕一根本区别产生,具体来说,
前向渲染 Forward Rendering :着色/光照渲染和几何体在同一环节计算
在如何计算光照和材质上更多的自由度,但在混合各种功能时会受限。
因为在同一环节处理,几何体的对象信息是完全的,不像延后渲染 ...
你与钱的关系,怎么样都可以
01 钱是镜子钱,是现代人生活中必不可少的东西,甚至可能是最为密切的接触物,钱就是一面镜子,我们如何看待和对待钱,本质也是反映出了我们的价值观。
想要看看钱对我来说究竟是什么呢
先问问自己对于钱的情绪和态度。
有的人会很渴望钱,他们真真切切感受到需要钱的窘迫,他们可能正有超出偿还能力的负债需要解决、可能有着突发的病情需要治疗。这些时候,花钱,真就等于买命。
很多人都表现出对钱的讨好,嫌贫爱富,看到有钱就各种夸耀,看到没钱,不,可能根本看不到不能体现金钱的人和体验。
有些人和钱的关系就很从容,大方表达喜欢钱,钱也喜欢ta,心中不缺,却也珍惜。也有很多人对钱无感,活得洒脱自然,人生照样丰盈和充实,只是脚下的生活可能不太舒适。还有很多人对钱感到恐惧,他们不敢承接大钱,钱是一种堵物,会带来惩罚,会带来不确定性和风险,他们甚至不太愿意谈论钱。
还有人很讨厌钱,有钱就对应着为富不仁、不义之钱,一旦有钱,人就必然走向崩坏。
02 回看金钱与我当把这些情绪统统梳理在这,回看人生的经历,从我的家庭、我的父母,他们就是勤勤恳恳又恐惧着钱的人,同时也表现出一些对钱的讨好。我从小的生活,从未谈论过关 ...
书评-Show Your Work
01 勇敢晒出你的点子
我们找寻工作、向别人介绍自己,绝大部分人都是通过自己的简历、一次次的作品的结果来证明自己是谁。一方面,这很难,我们需要花费一大块时间来精心准备简历,而它表达的内容也是非常有限的;另一方面,为了下一份工作,又不得不为了做出结果而奋斗,每一次行动都多了一个对下一次展出结果的顾虑。
但在当下的网络世界,我们的点点滴滴,我们的所思所想都可以直接表达,你大可以有一处空间来表达你经历了什么,你的想法,你的纠结与选择,你的生活与人生态度,你的学习经历的坑坑洼洼。一切的一切,你都可以分享,唯一要求的,就是真诚,诚实的面对自己。
02 把工作和分享一致化
分享和工作冲突吗?分享和工作不冲突吗?我们工作一天,满载运作,分享需要足够的劲和时间去做,我们真的有这精力和时间吗?我们当然有,在于我们的选择,我们为什么非得满负荷在工作中运转呢。很多时候,工作中都有非常多很好的分享的素材,比如我们遇到的问题、我们遇到的事情、我们的经历和想法。这些触动如果被及时记录下来,找到自己时间去消化和探索这些内容,我们会收获和成长的更多,这当然是会反哺我们的工作能力的。只是,它看上去并不立竿 ...
书评-动机心理学
01好久没有读这么干的书了,就像教科书一样,几乎每一页能能划一划、写一写,看了半天发现,怎么才看了八九页,反复确认了下,还真就只看了这么几页,就这样慢吞吞的看了一个月。别说,看完一方面觉得,啊好多我已经忘了,另一方面还真有点点成就感。毕竟是认认真真啃了一个月的动机心理学啊,这种把书读深了的感觉,很自豪。
虽然我花了一个月来读这本书,但这本书其实挺「好读」的,里面的内容量很大,可以钻精的地方就特别的多。但作者在结构设计上,是考虑了知识的框架,以及让人读下去的技巧的。比如在每一章的开头,都会由一个案例开始,由这个案例抛出一系列的问题,然后开始解构和关联这些问题,引出想讲述的东西。在讲概念的同时,也会不断 callback 前面的案例,让人能结合实际场景来理解。同时,在很多边边角角的情况下(毕竟任何概念都不是一概而论的),作者会抛出一些随堂练习的疑问,引发人进一步去思考,去理解其复杂性,而不是只是接受这些概念。
总体来说,我认为这本书是难啃的、但也是好读的,更棒的是它在内在动机这个课题上很全面。从动机研究的历史、自决理论、情绪模型、潜意识、个体差异、环境影响等等这些理论基础,再具体到目标的制 ...
书评-卡片笔记写作法
01说起来,我读这本的原因很简单,它用一个很粗暴的案例吸引了我:
卢曼,使用这套 Zettelkasten 方法非常高产的写了 58 本高质量的书及大量论文,他在一项调查问卷中答到:
项目:社会学理论期限:30年成本:0
然后我顺着查了一下卢曼是谁。尼克拉斯·卢曼,德国当代重要的社会学家,早年研习法律担任公职,但他通过自己的兴趣和长期的专业出版物在 41 岁时获得了大学社会学教授的职称,这套卡片笔记正是它分享出来的方法论。他以一个相当实际的行动过程和结果来证明这套方法论是多么的有效。
02这本书对我来说最大的收获是,认识到任何工具、方法论都是孤立的,不论是思维导图、GTD、或是这个卡片笔记。我们必需把它们精心设计结合到自己的工作流程中,这些工具和方法论才能发挥它们的价值。
这意味着,学习这些工具只是观察了一把锤子是如何被「他人」使用的,但如何去打造自己的锤子,以及这把锤子用来做什么,能否得心应手,其实是无法被他人解决的。
方法论和工具的布道,说到底是建立人的自信、引起我们的好奇心与冲动,去实践、去摸索,去打造真正适合自己的工具和工具的使用方式,找到适合当下的自己的工作流程。
0 ...
我们因为什么而进食?
01生活在现代社会的人类,已经绝非是简单的「内稳态饥饿」,还包含了很多「享乐型饥饿」。
内稳态饥饿由我们的进食间隔时间、营养、食物能量影响,通过我们的身体反馈给我们,这是最自然的生物的本能。
享乐型饥饿的原因则复杂的的多,可能由于渴望的产生和诱惑的易得性,也可能是追求某些积极体验,更有可能是希望舒缓各种负面情绪的期待。
02内稳态饥饿几乎不需要意志力来控制,饿了就吃,饱了就停。
要注意的是身体从各器官到大脑反馈饱了的周期是需要一定时间的,一般学术上认为是20分钟左右,我个人的经验在3-5分钟左右,我们需要细嚼慢咽、或是时不时放下餐具一类的措施来让自己吃的稍微慢一点,一方面是为了身体信号的传输、另一方面也有利于各种营养物质的消化和吸收。
另外,也需要关注身体在营养方面给到的反馈,比如感到乏力,那么可能是碳水不够,可能会是眼睛干涩,也可能是维A不足,身体不单单会反馈饿与不饿,也会反馈它正缺少什么,如果有相关的外在知识储备,它也会转化成各种渴望告诉你,否则就是各种身体信号,这也是为什么我们要关注营养学、和请求专业人士的原因。
对于我来说,在饮食上,尽可能避免白天 4 小时以上不吃东西,因为饥 ...
当我拥有空间的时候,我反而更舒服了
01量化生活是为了更好的看清自己
毕业这些年越来越多的买买买,当每天都是快递,满怀期待的匆匆拆开,一次、两次、一百次,一年、两年、三年,我现在去回忆和思考,这种感觉大概在第二年就开始变质了,它不再是单纯的一种开心,它的底层色彩变成了“不满足”,不停的通过购物,丰富自己的物质来想让自己开心、满足。
我从前年开始做一件事,量化我的物质,最开始,从护肤品开始,建立自己的数据库,每一样进入小家的护肤品,我都开心的将它们记录下来,迎接它们、期待它们将我变得更加美好。很快,一年的时间我就塞满了我的一个柜子,有自己习惯用的、有被种草到我的“痛点”的,有“啊好棒得试试”的,也有“礼盒很不错不如买来就送人吧”的。然后现实的问题就产生了,我是真的用不完,每周的自动提醒邮件中开始出现越来越多的黄色提醒距离过期仅有半年了,也开始出现红色提醒那些使用中的已经过期了。我开始停下来,去复盘我的护肤品们。
我会发现一些在这件事情上的规律,比如精华和洗面奶真的很多,但像面霜又都会紧缺。小样根本用不完,但一直用小样又很委屈自己,在使用体验上正装可舒服太多了。彩妆类的使用频率真的很低,我就是不喜欢去化妆,素面朝天最舒服。 ...
Electron 开发踩坑记录
实现打开页面跳转系统浏览器期望实现客户端内有些页面跳转用户自己电脑的浏览器,而不是新开 electron 窗口
思路:拦截 window.open,识别参数处理文档:https://www.electronjs.org/docs/api/web-contents#contentssetwindowopenhandlerhandler
1234567891011121314const mainWindow = new BrowserWindow({ width: 1000, height: 600, });// some unrelated thingsmainWindow.webContents.setWindowOpenHandler(({ url }) => { if (url.startsWith('http')) { shell.openExternal(url); return { action: 'deny' }; & ...
React18 防抖节流新实现
导读React18 起新加入了 useTransition 方法,
这个方法能解决什么问题,我们又如何使用它实现更优秀的产品体验?
既然文章标题说到了“防抖节流”,那这个方法和防抖节流有什么关系呢,会是同样技术思路的内部封装吗?
我们从防抖节流这项前端技术人必备的小技巧切入,来看看新方法 useTransition 的面纱。
再谈防抖节流在绝大多数的产品交互中都都存在着两种数据反馈。一种是当我点击一个按钮,我希望它给我一份最新的数据;另一种是当我不断点击一个按钮的时候,我希望它始终给我最新的数据。在用户的角度,这两者的体验是具有一致性的,即当我“发生动作”时,我都希望尽快拿到最新的反馈结果。但在技术上,这两者是有巨大不同的,在 web 的世界里,数据响应是异步的,当动作持续发生时,如何让最新结果更快地反馈到用户,既需要考虑数据请求触发的优化,也需要考虑重复渲染成本的优化。
所以,我们引入两个概念来区分。我们把直接的交互反馈叫做「紧急更新」,典型的场景如点击按钮提交数据;把可能持续性触发的交互反馈叫做「过渡更新」,典型的场景如持续拖拽浏览器窗口重算布局、输入框持续输入触发联想请求。 ...