1.【Catlike Coding Custom SRP学习之旅——11】Post Processing
2.宇宙最强开源破解密码利器:Hashcat 第一篇
3.Cat 命令的码解源码历史
4.mycat 高可用
【Catlike Coding Custom SRP学习之旅——11】Post Processing
来到了后处理环节,这是码解渲染管线中关键的一环。后处理技术能够显著提升画面效果,码解比如色调映射、码解Bloom、码解抗锯齿等,码解上海中检溯源码查询都能在后处理中实现。码解除了改善整体画面效果,码解后处理还能用于实现描边等美术效果。码解本文将主要介绍后处理堆栈和Bloom效果等内容。码解
考虑到篇幅和工作量,码解本文将从第4章节后半部分开始,码解以及未来的码解章节,主要提炼原教程的码解内容,尽量减少篇幅和实际代码。码解在我的Github工程中,包含了对源代码的详细注释,需要深入了解代码细节的读者可以查看我的Github工程。对于文章中的错误,欢迎读者批评指正。
以下是原教程链接和我的Github工程:
CatlikeCoding-SRP-Tutorial
我的Github工程
1. 后处理堆栈(Post-FX Stack)
FX,全称是Special Effects,即特殊效果,也称为VFX(Visual Special Effects),即视觉特效。参考维基百科,视觉效果(Visual effects,简称VFX)是在**制作中,在真人动作镜头之外创造或操纵图像的过程。游戏很多技术都会沿用影视技术上的一些技术,比如在色调映射时,可以采用ACES(**色调映射)等。藏头诗源码关于Special Effects为什么叫FX,而不是SE,网上似乎只是因为FX谐音Effects,让人不知道从哪吐槽。
通常来说,因为后处理会包含很多不同的效果,如色调映射、Bloom、抗锯齿等等,因此后处理在渲染管线中的结构往往是一个堆栈式的结构(URP中也是如此,使用了Post Process Volume)。因此,在本篇中,我们将搭建这样一个堆栈结构,并实现Bloom效果。
1.1 配置资源(Settings Asset)
首先,我们定义PostFXSettings资源,即Scriptable Object,将其作为渲染管线的一项可配置属性,这样便于我们配置不同的后处理堆栈,并可以方便地切换。
1.2 栈对象(Stack Object)
类似于Light和Shadows,我们同样使用一个类来存储包括Camera、ScriptableRenderContext、PostFXSettings,并在其中执行后处理堆栈。
1.3 使用堆栈(Using the Stack)
在进行后处理前,我们首先需要获取当前摄像机画面的标识RenderTargetIdentifier,RenderTargetIdentifier用于标识CommandBuffer的RenderTexture。在这里,我们使用一个简单的iris 源码int来标识sourceRT。
对于一个后处理效果而言,其实现过程说来很简单,传入一个矩形Mesh(其纹理即当前画面),使用一个Shader渲染该矩形Mesh,将其覆盖回Camera的RT上,我们通过Blit函数来实现该功能。
1.4 强制清除(Forced Clearing)
因为我们将摄像机渲染到了中间RT上,我们虽然会在每帧结束时释放该RT空间,但是基于Unity自身对RT的管理策略,其并不会真正地清除该RT,因此我们在下一帧时,该RT中会留存上一帧的渲染结果,导致了每一帧画面都是在前一帧的结果之上绘制的。
1.5 Gizmos
我们还需要在后处理前后绘制不同的Gizmos部分,这部分略~
1.6 自定义绘制(Custom Drawing)
使用Blit方法绘制后处理,实际上会绘制一个矩形,也就是2个三角面,即6个顶点。但我们完全可以只用一个三角面来绘制整个画面,因此我们使用自定义的绘制函数代替Blit。
1.7 屏蔽部分FX(Don't Always Apply FX)
目前,我们对于所有摄像机都执行了后处理。但是,我们希望只对Game视图和Scene视图摄像机进行后处理,并对不同Scene视图提供单独的开关控制。很简单,通过判断摄像机类型来屏蔽。
1.8 复制(Copying)
接下来,完善下Copy Pass。我们在片元着色器中,对原画面进行采样,cvload源码并且由于其不存在Mip,我们可以指定mip等级0进行采样,避免一部分性能消耗。
2. 辉光(Bloom)
目前,我们已经实现了后处理堆栈的框架,接下来实现一个Bloom效果。Bloom效果应该非常常见,也是经常被用于美化画面,其主要作用就是让画面亮的区域更亮。
2.1 Bloom金字塔(Bloom Pyramid)
为了实现Bloom效果,我们需要提取画面中亮的像素,并让这些亮的像素影响周围暗的像素。因此,需要首先实现RT的降采样。通过降采样,我们可以很轻易地实现模糊功能。
2.2 配置辉光(Configurable Bloom)
通常来说,我们并不需要降采样到很小的尺寸,因此我们将最大降采样迭代次数和最小尺寸作为可配置选项。
2.3 高斯滤波(Gaussian Filtering)
目前,我们使用双线性滤波来实现降采样,这样的结果会有很多颗粒感,因此我们可以使用高斯滤波,并且使用更大的高斯核函数,通过9x9的高斯滤波加上双线性采样,实现x的模糊效果。
2.4 叠加模糊(Additive Blurring)
对于Bloom的增亮,我们直接将每次降采样后的Pyramid一步步叠加到原RT上,即直接让两张不同尺寸的以相同尺寸采样,叠加颜色,这一步也叫上采样。codeblocks源码
2.5 双三次上采样(Bicubic Upsampling)
在上采样过程中,我们使用了双线性采样,这样可能依然会导致块状的模糊效果,因此我们可以增加双三次采样Bicubic Sampling的可选项,以此提供更高质量的上采样。
2.6 半分辨率(Half Resolution)
由于Bloom会渲染多张Pyramid,因此其消耗是比较大的,其实我们完全没必要从初始分辨率开始降采样,从一半的分辨率开始采样的效果也很好。
2.7 阈值(Threshold)
目前,我们对整个RT的每个像素都进行了增亮,这让这个画面看起来过曝了一般,但其实Bloom只需要对亮的区域增亮,本身暗的地方就不需要增亮了。
2.8 强度(Intensity)
最后,提供一个Intensity选项,控制Bloom的整体强度。
结束语
大功告成,我们在渲染管线中增加了后处理堆栈,以及实现了一个Bloom效果,其实在做完这篇之后,我觉得这个渲染管线才算基本上达成了大部分需要的功能,也算是一个里程碑吧。
宇宙最强开源破解密码利器:Hashcat 第一篇
Hashcat被誉为宇宙最强的开源密码破解工具,拥有针对Windows、Mac和Linux系统的版本,支持多种计算核心如CPU、GPU、APU、DSP和FPGA。它能处理的hash散列算法多样,能够破解rar、office、pdf、windows账户、wifi等多种密码。本文将指导您在Windows 系统下安装和配置Hashcat,并展示具体密码破解方法和密码保护技巧。
开始,访问Hashcat官网下载最新版本的软件包,这里推荐使用v6.1.1,确保下载hashcat binaries,它已经包含了直接运行的exe可执行文件。对于hashcat sources,您需要利用类似的MinGW工具将其源码编译成可执行文件。下载完毕后,直接在软件包主目录下使用命令行运行Hashcat。运行时请确保已切换到Hashcat主目录。使用测试电脑配置进行Hashcat的探索。
在进行密码破解时,John the Ripper是一个常用的辅助工具,用于获取加密文件的Hash值。下载对应版本john-1.9.0,并配置所需的python和perl环境。通过命令行运行John the Ripper进行密码破解,注意调整相应的环境变量。
使用Hashcat破解密码的步骤包括查看命令行帮助和使用Hashcat的wiki文档。前者提供常用命令的概览,后者则详细介绍攻击类型、哈希类型对照表、掩码设置和平台支持。如有疑问,可以直接联系Hashcat团队。
接下来,通过指令`hashcat -b`测试笔记本的算力。针对rar、office、pdf等加密文件,采用掩码攻击方法,而zip文件则使用字典攻击。具体操作包括创建测试rar文件,使用John the Ripper获取哈希值,然后在Hashcat中输入命令进行破解。结果将实时显示在控制台上,并输出到指定文件中。
本文展示了使用Hashcat对rar、zip、pdf和word加密文件的破解过程,包括字典破解和掩码破解。在实际应用中,应首先尝试字典破解,当现有字典无效时,可考虑使用暴力或掩码组合破解。随着密码复杂度的增加,破解难度将成指数级增长。未来,将继续深入研究Hashcat的密码破解技术,并分享密码设置的最佳实践。
Cat 命令的源码历史
在计算机科学领域,有人曾质疑是否值得主修这个学科,认为它发展迅速,学过的知识可能很快过时。然而,实际上,计算机科学的基础原理和技能并没有因为技术的更新而完全变化。例如,grep这个简单的程序自年编写以来,仍然在被广泛使用,证明了计算机科学领域中一些原理的持久性。
以grep为例,它在年后就没有更新过,这表明在计算机科学中,有些原理和技能可以经受住时间的考验。即使技术在不断进步,但解决问题的方法和思路仍然可以被应用在新的场景中。
回顾cat命令的源码历史,可以发现它自年肯·汤普森编写以来,经历了多次重写,但核心功能和运行方式基本保持不变。从PDP 7到PDP 再到C语言,cat命令在不断适应新的硬件和编程环境,但其基本原理和功能仍然得以保留。
尽管cat命令的源码在不同的Unix版本中有所变化,但其核心功能和原理并没有过时。这表明,在计算机科学领域,有些原理和技能可以跨越时间,经久不衰。因此,计算机科学并非一个不断破坏现状的领域,而是建立在历史文物基础上的学科。
在现代计算机系统中,我们正在使用着有着数十年历史的程序,例如grep和cat命令。这说明在计算机科学领域中,有些想法和程序本身具有持久性。随着时间的推移,我们可能会发现自己正在使用着有着接近百年历史的程序。
因此,计算机科学和软件开发不仅仅是不断发明新技术的过程,而是对历史文物的持续理解和维护。有时,我们可能需要花费更多时间在理解和维护这些历史程序上,而不是编写新代码。计算机科学的持久性体现在它能够适应技术的发展,同时保留其核心原理和功能,为未来的技术发展打下坚实的基础。
mycat 高可用
mycat 高可用
mycat 可通过 zookeeper 集群进行配置文件管理。
1.1 搭建 zookeeper 集群
此处不做 zookeeper集群搭建讲解
1.2 配置mycat支持zookeeper
修改 mycat conf 目录下myid.properties
loadZk=true # zk集群地址,多个用","隔开 zkURL=..3.:,..3.:,..3.: # zk集群内Mycat集群ID clusterId=mycat-cluster-1 # Mycat集群内本实例ID,禁止重复 myid=mycat_fz_ # Mycat集群内节点个数 clusterSize=3 #集群内所有节点的 id clusterNodes=mycat_fz_,mycat_fz_,mycat_fz_ #server booster ; booster install on db same server,will reset all minCon to 1 type=server boosterDataHosts=dataHost1
1.3 自定义配置
将需要修改的配置文件替换到 conf 目录中的 zkconf 目录下,只需要在一台机器修改即可,需要注意 conf目录中的 server.xml 中用户名和密码与 zkconf 中的不一致
1.4 上传配置
执行修改了配置文件的 mycat 下的bin 目录下的initzkdata.sh,上传配置文件,(在修改了配置文件的机器上执行)
./initzkdata.sh
1.5 启动所有 mycat
启动后发现其他 mycat conf 下的配置文件已经自动变化为修改的内容,是zookeeper 中下载的
2. 使用的是 lvs+keepalived 的方式
此处使用的是 lvs+keepalived 的方式实现mycat高可用负载均衡集群
2.1 配置环境
角色 主机IP 主机名 操作系统版本 软件版本
VIP ..3.
LVS-DR-Master ..3. keepalived CentOS6.9 Keepalived v1.2.,LVS 1.2.1
LVS-DR-Backup ..3. keepalived CentOS6.9 Keepalived v1.2.,LVS 1.2.1
mycat-Realserver ..3. mycat CentOS6.9 mycat v1.6.5
mycat-Realserver ..3. mycat CentOS6.9 mycat v1.6.5
mycat-Realserver ..3. mycat CentOS6.9 mycat v1.6.5
2.2 安装keepalived和ipvsadm
注意:ipvsadm并不是lvs,它只是lvs的配置工具。在 CentOS1.1 的内核版本中是默认支持的。因此,这里不需要重新安装。使用 yum 的安装方式,分别在 keepalived 和 keepalived 两台主机上安装 keepalived 和 ipvsadm。除了这种简易方式外,也可直接编译官方的源码包。安装步骤可参考文档。
2.3 配置Keepalived
2.3.1 master
vi /etc/keepalived/keepalived.conf
配置详细内容如下,注意优先级、状态、接口、虚拟IP地址、负载调度算法、服务器节点配置、检查间隔、会话保持时间、协议类型等参数设置。
2.3.2 backup
备份机配置与主机一致,除了优先级和状态修改外。
在配置文件中,特别需要注意的是interface的修改,根据实际情况进行相应的修改。
2.4 安装配置 mycat
安装mycat请参考相关文档。
2.4.1 绑定虚拟 vip
在mycat服务器上为lo:0绑定VIP地址、抑制ARP广播。
执行脚本./realserver.sh start在mycat和mycat、mycat三台主机上。
2.4.2 查看
运行 ifconfig 查看结果。
2.5 启动 keeplive
分别在keepalived和keepalived上启动Keepalived服务。
2.5.1 查看
通过ipvsadm -L 查看映射。
2.5.2 测试
通过一台装有 mysql的机器连接虚拟 ip 发现可以登录数据库。
2.5.3 查看转发
再次在 keepalived 的机器执行ipvsadm -L,发现被转到上面一次。
2.5.4 负载均衡方式
与配置相关,多次都指向一个机器,因为我们在 keepalived 的配置文件中persistence_timeout属性指定为,则代表秒内同一个机器来的请求会被 hash 一致性分配。如果想实现严格意义上面的轮询,修改为0即可。