Loy-为什么我们总护着自己人——社会认同理论
团建时教练把你们随机分成红队和蓝队,做了三小时游戏。结束时教练说”两队交换一名队员”,你心里一紧——把谁换走都舍不得,那三个人你一小时前还不认识。晚上聚餐,红队和蓝队的人自动分开坐,聊起下午的胜负,你发现自己会替红队找补:”我们那局是运气差
MAKE THINGS · WRITE THINGSCURRENT FOCUS
用鲜明模块整理游戏开发、AI、视觉设计与生活中的好奇心。每篇文章,都是一次值得留下的探索。记录技术、视觉和创作过程中的连接。
LATEST NOTES
从最新记录开始,或按左侧主题筛选。
团建时教练把你们随机分成红队和蓝队,做了三小时游戏。结束时教练说”两队交换一名队员”,你心里一紧——把谁换走都舍不得,那三个人你一小时前还不认识。晚上聚餐,红队和蓝队的人自动分开坐,聊起下午的胜负,你发现自己会替红队找补:”我们那局是运气差
面试官低头看了一眼你的简历——毕业院校、上一家公司、一张证件照——大概三十秒。然后你走进来,讲了二十分钟,回答流利、逻辑清晰,但他心里那杆秤,早在你开口前就已经定好了大半:简历漂亮,你说的每句话都在”印证”他遇到了一位人才;简历普通,你同样
把一只跳蚤放进玻璃罐,盖上盖子,它每次跳起都撞到盖子。几天后拿掉盖子,跳蚤依然只跳到原来的高度——盖子已经不在了,但它不再试更高的那一跳。 人也是一样:一个被裁员后投了五十份简历全部石沉大海的求职者,当猎头带着一个真正匹配的机会找上门时,他
GT7 的调教不是把“更硬、更低、更多下压力”同时拉满,而是在轮胎、空气动力、机械抓地、动力输出和比赛策略之间分配预算。真正有效的设定,必须回答三个问题:车辆在哪个阶段失衡、赛道主要奖励什么、轮胎与燃油能否把速度带到终点。 本文先建立一套按
一趟旅行,你玩了七天,六天半都阳光明媚,可最后一天飞机延误、行李丢失、在机场坐了一整夜——多年后你回忆起来,脱口而出的是”那趟倒霉的旅行”,那六天半的好心情仿佛从未存在。反过来,一场演唱会你排了三小时队、淋了雨、站得腰酸背痛,但散场前最后一
这三件事看起来毫无关系: 办公楼电梯从 4 台变成 3 台(坏了一台在维修),早高峰拥堵暴涨,好几次挤不上去; 双休变成单休,只少”一天”,体感却远不止少一天; 同样是 1 万元意外开销,对有的人是小事,对有的人是借债的开始。 但它们背
同一件 999 元的夹克,摆在”原价 1999 元,五折”的货架上,和你偶然路过小店看到墙上直接标着”999 元”,你的感觉完全不同。前者你觉得自己”捡了个大便宜”,后者你只觉得”有点贵”——夹克没变,价格没变,变的只是你先看到了哪个数字。
渲染技术不是一条线,而是多条线并行演进:光照、GI、反射、AO、阴影、抗锯齿……每一条都被”硬件能力、美术流程、标准化需求”推着走,最终收敛成今天各引擎里那套熟悉的组合。 这篇把游戏行业常用的渲染技术按维度整理成演进链——每条链给出”从哪来
RTGI(Ray Traced Global Illumination,光线追踪全局光照)是 UE4 时代(4.25 引入)的纯硬件光追 GI 方案:用 GPU 的光追核心沿光线方向求交,把间接漫反射”真的算出来”,再靠降噪收敛成稳定画面。
APV(Adaptive Probe Volumes,自适应探针体积,常简称”体积探针”)是 Unity 6 正式化的烘焙 GI 方案,URP 和 HDRP 都支持,这篇以 URP 为主。它是 Unity 放弃 Enlighten 之后选定
这个月你表现平平,老板把你叫到办公室,两个方案摆在面前:A,给你加薪 500 元;B,这个月绩效扣 500 元。加薪 500 你只会淡淡说句”谢谢老板”,但要是告诉你”绩效要被扣 500”,你恐怕当场就坐不住了。 同样是 500 元,一个让
三件事看起来毫无关系: 有条不紊地忙了一天,晚上反而不觉得累,状态还算在线; 反而是完全空闲的一天,躺着刷了半天手机,晚上说不出的疲惫; 游戏开局带着任务系统时很沉浸,主线做完之后,连支线都不想碰,总觉得少了点什么。 但它们背后是同一套
「悬疑」在豆瓣上是一个很特别的标签。它不像科幻、动画那样有明显的边界,几乎所有带谜团的故事——心理惊悚、本格推理、高概念反转、犯罪侦破——都会被贴上这张标签,结果就是你在任意一个综合榜单里翻到的悬疑片,往往风格差异极大。 如果你喜欢的是《致
豆瓣电影 Top 250 很适合补经典,但它也有一个天然特点:一部新电影必须积累足够多的评价,并在较长时间里保持高分,才有机会进入榜单。因此,当我们想找近十年的好电影时,原榜单里大量经过时间检验的老片,反而会让新片显得很稀少。 这份榜单把时
产品评审会上,你明显看到方案里有个致命漏洞——页面的主按钮会把用户带回登录页。但全场 8 个人都点头说”没问题,可以上”,还有人补充”这个交互挺顺的”。轮到你发言时,你张了张嘴,最后说的是:”我也没什么意见。”散会后你越想越不对,却已经没人
上一篇文章梳理了古典主义、印象派、立体主义、抽象艺术等美术流派。来到电子游戏,分类会再次变得混乱:有人把“二次元”和“赛博朋克”并列,有人把“PBR”和“卡通风”当成对立面,也有人把低多边形、独立游戏、治愈系和手绘风混在同一张表里。 这些词
第一次接触音乐的人,很容易从流派开始:蓝调、爵士、乡村、摇滚,下面还能继续分出三角洲蓝调、比波普、朋克、金属、独立摇滚。每种音乐都有相对清楚的声音特征、社会背景和继承关系。 美术看起来也应该有一张类似的地图:古典主义、浪漫主义、印象派、立体
一个刚拿到驾照的司机,三个月内自我感觉”我是这条街最快的车神”,变道不打灯、超速有理;反而开了五年车的老司机,越开越慢、越开越小心,还总说”我技术一般”。车还是那辆车,人还是那个人,开得越久,越不敢说自己会开。 这就是达克效应(Dunnin
地铁车厢里有人突然晕倒。你第一反应是看向周围——其他人也正看向你。每个人都想”会有人处理的”,每个人都以为别人会比自己先动,于是几秒钟过去了,没人动。可如果这节车厢里只有你一个乘客,你几乎肯定会立刻起身。 同一件事、同一个人,人多人少,决定
几件看起来矛盾、却每天都在发生的事: 朋友圈立了 flag”再也不熬夜”,当晚又刷手机到凌晨三点,上床时想的却不是”我食言了”,而是”今晚情况特殊,明天一定早睡”; 朋友都说”他不适合你”,你心里其实有数,却反而更维护他:”他只是不擅长表
三件事看起来毫无关系: 在公交站等了半小时车还没来,明明打车也就十几分钟的事,却因为”都等了半小时了”继续干等; 一个做了三年的项目眼看要黄,管理层还在追加预算,理由是”已经投了这么多”; 一段处了五年、双方都心知肚明不合适的感情,却因为
将工作简单分为技术型和服务型,很快便会遇到难以归类的情况。医生既依靠专业技术,也提供服务和照护;建筑师同时处理技术、创造、协调与风险。职业名称并不能完整反映一项工作的日常内容。 “技术型”和“服务型”是常见答案,但它们并不在同一个维度上。技
程序员开发 Roguelike 时,往往会率先研究地图生成、寻路和视野算法。这些问题固然重要,却通常不是项目失败的首要原因。更常见的情况是开发范围持续膨胀,或者经过长期制作,仍无法明确一局游戏的主要乐趣。 这篇从制作角度整理开发顺序。技术方
我见过几次类似的情况:劝过、陪过、道理也讲过,对方还是不动;等旁边的人不再使劲,他反而自己开始调整。下面这些心理学概念不能解释所有关系,但放在一起,至少能说明“越劝越不改”为什么并不罕见。 核心机制:自我决定理论(Self-Determin
一种颇具吸引力的 Shader 降级方案是:先用路径追踪、多层 PBR 和全局光照生成高质量结果,再以这些结果训练小型模型。运行时只保留模型权重和推理代码,即使展开后是一面难以阅读的数字墙,只要能在低端设备上运行并接近原始画面,仍具有实际价
项目从 Unity 2022.3(URP 14)升级到 Unity 6(URP 17)后,自定义 ScriptableRendererFeature 可能不再显示,或出现资源访问错误。主要原因是渲染 Pass 的入口从 Execute()
日常观察云层时,人们常用“鱼鳞状”或“将要下雨”一类经验描述。现代云分类系统只有两百多年历史,其内容也不只是为不同云形分别命名。 1. 在云图集出现之前19 世纪以前,云没有统一的名字。画家画云凭感觉,水手看云凭经验,农民望云凭口耳相传的谚
排线(Hatching)是用紧密排列的平行线来表现明暗、质感和体积的素描技法。交叉排线(Cross-Hatching)则是在此基础上叠加不同方向的线层,以获得更丰富的调子层次。 排线如今常被视为素描基本功,但它的形成与早期复制技术关系密切。
Electron、Tauri、Flutter 和 React Native 都能用于跨平台桌面开发,但它们复用的技术层并不相同:Electron 和 Tauri 复用 Web 前端,Flutter 复用自绘 UI,React Native
许多表达困难并非源于缺少想法,而是想法出现时尚未形成语言。一个人可能已经察觉方案存在问题、气氛有所变化,或者事件背后还有另一层动机,开口时却只能说出“感觉不太对”。 这种整体判断像一张低分辨率的图。要让别人也看到它,还得补出边缘、材质和光源
RenderGraph(渲染图)将一帧中的 Pass 与资源读写关系显式记录下来,使渲染管线可以在执行前分析整帧任务。 传统 SRP 写法里,ScriptableRenderPass 往往在执行阶段直接申请临时 RT、设置 RenderTa
Unity 应用通过 Xcode 安装到真机后,可以使用 Instruments 分析 CPU、内存、GPU、线程和能耗。它会将可复现的操作记录为时间线,用于定位卡顿区间、线程负载、内存增长、GPU Pass 开销,以及温度或能耗导致的降频
大模型最初以对话产品进入大众视野:用户提出问题,模型生成文字。随着代码生成、图像理解和工具调用逐渐成熟,“聊天机器人”已经不足以概括它的能力边界。 这些能力可以分为三个层次: 对话模型:给出答案。 多模态模型:理解并生成不同形式的内容。
Unity Jobs 和 Burst 经常配合使用,但两者解决的问题不同: Jobs:把工作拆开,调度到多个CPU核心上并行执行。 Burst:把一部分C#编译成高性能Native机器码,并进行SIMD等优化。 Jobs 并不必然提高性
ALU、SIMD、Warp/Wave 和 half 精度分别描述 GPU 的执行电路、并行方式、线程调度单位与数据精度。它们属于不同层级,不能由某一个参数直接推导 GPU 的实际性能。 各概念的基本关系如下: ALU:真正执行数学
客户端 TA 岗位通常同时涉及 Unity URP/HDRP 管线、Shader 效果、性能分析、工具插件和美术工作流。复习时不仅要掌握 Shader 语法,还需要将这些知识组织成可以落地的技术支持体系。 复习目标包括: 能讲清
Shader 中出现 if 并不代表一定产生明显开销。分支成本主要取决于同一个 GPU 执行组中的线程是否选择了不同路径。 如果整个执行组都进入同一个分支,动态分支反而可以跳过大量无用计算;如果组内线程分别进入不同分支,就会产生线程发散(D
记录一下YCT里GPUDriven 草地渲染实现。 1.静态数据烘焙使用地形均匀网格Mesh和美术画的草地Mask,生成草地的分布数据。 方法是遍历Mesh的三角形,用三角形UV去采样Mask,如果三个顶点都在Mask上是处于草地分布的,就
本文记录对SRP自定义管线的开发改造。 基于RenderGraph的基础Pass PCSS软阴影 TiledBaseForward+光照
本文记录对URP延迟管线的开发改造。 GBufferShader HBAO HIZ-Build SSAO SSGI SSR TAA ContactShadow
SSAO的进化版。 不再是通过对比深度来判断是否遮挡,而是寻找每个方向上的地平线高度。 原理基础GI是一个几何点从旁边所有角度的光照和。HBAO就是从几何点往旁边和方向去计算遮蔽的过程,通过简化方向为8个或者16个,结果贴合GI的原理。
原理基础SSR需要ColorTexture和DepthTexture。 视角空间的SSR的大概步骤:1、屏幕空间坐标——>ViewPos2、ViewPos获取ViewDir和ViewNormal3、ViewDir和ViewNormal
记录BongoCat的自动开箱。 BongoCat的dll没有加密混淆,作者也说代码可见,可以自己修改。 使用反编译工具dnSpy,打开游戏目录的Assembly-CSharp.dll。 然后修改dll里对应的代码。 修改完保存dll替换。
UE里默认不支持多Pass,项目里一般都会需要这个功能。 记录一下一种实现思路。 效果视频: StaticMesh多Pass实现主要是两个方面,一个是材质管理,另一个是把多Pass加入渲染流程中。 材质管理首先需要在UStaticMe
大佬们的文章链接参考: https://zhuanlan.zhihu.com/p/666213716 https://zhuanlan.zhihu.com/p/100748588 UE的DeferredDecalUE的延迟贴花有两种版本,一
这篇记一下ShadowMap阴影的技术。 1.ShadowMap相关ShadowMap的原理从Light的方向渲染场景的深度图,因为具有遮挡关系,所以能做阴影用。https://zhuanlan.zhihu.com/p/384446688
这篇需要常复习。 1.坐标系笛卡尔坐标系2D 坐标系 3D 坐标系1.左手坐标系Unity的左手坐标系,y上z前x右 UE的左手坐标系,z上y右x前,相当于untiy的坐标系翻了一下,但仍然是左手。 2.右手坐标系y上z后x右
已经在UE4.27 添加了 有两种, 一种是蓝图调用的GlobalShader Draw调用。 另一种是渲染线程过程中加了一步,可以做个类似后处理的那种。 记录第一种蓝图调用的这种,需要的所有东西: 1.C++的Shader结构Shader
常复习篇章。 渲染 空间转换过程VertShaderObject模型空间开始 ——(UNITY_MATTIX_M)——>World空间 ——(UNITY_MATTIX_V)——>View视角空间 ——(UNITY_MATRIX_
1.什么是PSO?PSO(Pipeline State Object)是现代图形API(DX12、Vulkan、Metal)提出的新概念,以前的API设置VS、Rasterizer、PS、BlendState这些状态时,需要一个一个调用设置
1.UE的DistanceField距离场的生成,有MeshDistanceField和GlobalDistanceField UE的主要应用是DFShadow、DFAO、材质DistanceFieldToNearest https://d
连接到PS5之后,可以通过Razor GPU For PS5,截帧分析每个DrawCall的具体消耗。 1.打开RazorGPUForPS5,点击Capture——GPU Capture截帧这个工具截出来没有RenderDoc那样对Pass
UE4里GPUScene相关的梳理。 1.引擎传输Primitive数据到GPU的方式什么是PrimitiveData? PrimitiveData是UPrimitiveComponent级别的几何数据,包括LocalToWorldMatr
虚幻创建插件在此总结一下。 基于UE5.1 Github版本 在项目里创建插件 有一个.Build.cs文件,一个插件Module的Plugin.cpp文件。
虚幻自定义MeshPass在此总结一下。 基于UE5.1 Github版本 UE5 AddOutlinePass https://zhuanlan.zhihu.com/p/597864516 UE4 AddOutlinePass 材质实例参
虚幻自定义ShadingModel在此总结一下。 基于UE5.1 Github版本 什么是ShadingModel?在UE的材质编辑器里,材质有ShadingModel可以选择,基本上有Unlit、DefalutLit、Subsurfa
虚幻自定义MeshComponent在此总结一下。 基于UE5.1 Github版本 1.几个比较重要的概念UPrimitiveComponent1234class ENGINE_API UPrimitiveComponent :
UE的Mesh关于LOD的切换是用的屏占比ScreenSize,一般是美术设置几个屏占比的参数,本地看着差不多就行了。 下面研究下这个屏占比在引擎里是怎么运作的,方便理解和优化功能。 Q:这个ScreenSize是怎么生效的?A:Scree
修改基于UE4.27,实际代码因为UE5重构了,还没写UE5版本。 记录一下DFShadow随Cluster裁剪更新的修改过程。(上次UE直播好像说5.3重构了GPUScene相关) 遇到的问题:植被Instance的DistanceFie
1.PreZ带来的优势,同时会有哪些消耗?Pre-Z(Depth Prepass)先绘制深度,后续 Base Pass / GBuffer Pass 再使用 ZTest Equal 或 ZTest LEqual。提前建立的深度缓冲
Unity项目的优化思路和实践经验在此总结一下。 1.性能检测要优化首先需要分析现有的性能瓶颈,获取性能数据,根据情况决定优化什么,如何优化。性能分析的工具和方法: -检测工具:Profiler、SnapdragonProfiler、Int
本文对URP使用的这段时间的一些理解和总结。从知乎转移:URP管线架构学习总结 1.URP渲染管线的架构图理解一个系统设计比较重要的就是类图了。 2.各个类的一些作用和使用(1)UniversalRenderPipelineAsset本质
问题背景为什么直接一条流水线会有性能瓶颈?在IMR里,GPU流水线是: 提交三角形——>VS——>Raster——>FS——>输出合并 没有全局信息、没有延迟、完全按照顺序执行。 GPU在执行FS的时候,并不知道像素
Temporal Anti-Aliasing(TAA,时域抗锯齿)通过跨帧累积样本,提高每个像素的有效采样数量。它能以较低的单帧成本抑制几何边缘和着色闪烁,因此成为实时渲染中常见的抗锯齿方案。 跨帧复用也会引入 Ghosting、Bleed
渲染管线中,光照计算阶段的组织方式决定了渲染器的整体架构。前向渲染(Forward)和延迟渲染(Deferred)是两种最主流的方案,它们各自衍生出一系列变体。 下文从光源裁减、G-Buffer、带宽和透明渲染等方面比较两类方案及其常见变体
SRP Batcher 是 Unity SRP 中用于降低 CPU 渲染提交开销的机制。本文整理其数据布局、适用条件,以及与 GPU Instancing 的区别。
搬运知乎之前写的文章链接:(知乎把GIF转换成了MP4,不知道怎么显示在这里,就先这样吧) https://zhuanlan.zhihu.com/p/143261544
其实渲染里没有真正的透明物体,透明效果是通过颜色的Blend模仿到的。 正常的透明渲染需要一个一个前后混合,所以半透明是通过前向渲染。 透明的渲染混合指令Blend 原因子 目标因子 Blend 原RGB因子 目标RGB因
PBR(Physically Based Rendering,基于物理的渲染)不是某一个固定 Shader,而是一套尽量遵循真实光照规律的材质与渲染方法。 它的目标不是绝对还原现实,而是让材质满足一些稳定的物理约束: 同一份材质换到不同光
渲染管线(Rendering Pipeline)描述的是:一组场景数据,如何一步步变成屏幕上的像素。 传统实时渲染管线通常可以从概念上分成三个阶段: 应用阶段(Application Stage):CPU 决定“画什么、以什么顺序画”。
本文在原有“引擎知识地图”的基础上补充概念说明与延伸资料。星级沿用原有标记,从基础知识(⭐)到前沿或引擎级内容(⭐⭐⭐⭐),用于表示建议的学习顺序,而非技术价值的高低。 通用参考(贯穿全文,各节不再重复) Real-Time Rende
卡通渲染的各个要素。这个已经被研究的太多了,贴几个别人的链接吧。 脸部SDF阴影: 🔗脸部 SDF 阴影zhuanlan.zhihu.com 博主2173关于卡通渲染的总结: 🔗2173:卡通渲染总结zhuanlan.zhihu.c
先Mark一下Shader这个分类。主要记录一些效果。//todo
法线贴图(Normal Map)用纹理保存表面法线方向,在不增加模型顶点和三角形的情况下,让光照表现出凹凸、刻痕、褶皱等细节。 它改变的是参与光照计算的法线,而不是真正修改几何体: 能改变明暗、高光和反射的细节。 不能改变模型轮廓。 不能
hexo使用备份在hexo文件夹开git bash 命令行hexo generate 生成静态文件 hexo server 开启本地服务器,http://localhost:4000/ 进行预览 hexo deploy 部署,上传gith