1.私密聊天什么意思?
2.srp是什么细胞生物学?
3.技术美术(TA)技术部分文章汇总(持续更新)
4.SRP合批问题
5.软件设计原则
6.Unity的URP HDRP等SRP管线详解(包含源码分析)
私密聊天什么意思?
私密聊天就是聊天内容仅对你们双方展示,除了隐秘外,也能保护你们的隐私安全。
一般私密聊天使用的都是有加密技术的安全软件。使用端对端加密技术、非对称加密技术、修改uniapp源码哈希函数的蝙蝠app就是一款加密软件,能够保证用户进行绝对的私密聊天。
端对端加密技术是只有发送端和接收端可以解密并查看数据内容,中间的任何环节都无法获取数据的实际内容。——对传输路径加密,保证信息不被任何第三方窃取,包括网络供应商、开发平台、黑客等。
非对称加密对内容加密,该加密技术会产生两个不同的密钥,加密密钥加密的内容只能该解密的密钥打开,密钥破解难度大,破解其中一个另一个也无法破解。
蝙蝠的密钥管理使用的是SRP公平算法里的哈希函数,保证用户密码只存在用户手机上,服务器上不保存密码。
最后蝙蝠还有许多功能,保证用户私密聊天。
预设密信示意图
srp是什么细胞生物学?
信号识别颗粒signal recognition particle (SRP)在真核生物细胞质中一种 小分子RNA (个核苷酸组成的7s RNA)和六种蛋白的信号识别颗粒复合体,此复合体能识别 核糖体 上新生肽末端的信号,顺序并与之结合,使肽合成停止,同时它又可和ER膜上的 停泊蛋白 识别和结合,从而将mRNA上的核糖体,带到膜上。. SRP上有三个结合位点:信号肽识别结合位点,SRP受体蛋白结合位点,翻译 ...
技术美术(TA)技术部分文章汇总(持续更新)
本文汇集了作者个人学习路径中的关键技术资源,旨在分享给需要的朋友们,希望有所帮助。 学习顺序大致按照作者的实践路径展开:首先从Unity的内置管线开始,包括SRP和URP自定义管线,作为技术基础,为后续图形算法的zblog源码下载实现打下基础。这是第一阶段,主要涉及实践和理论理解。
接下来是深入研究Unity引擎,从官方教程入手,特别是材质部分,然后逐步理解源码并进行修改,这是第二阶段,侧重于实践和代码理解。
学习过程中,切忌急于求成,如UnityShader相关资源,如Unity Standard Shader技术分析和内置着色器源码剖析,都是逐步突破的阶段。
算法实现方面,通过庄懂老师的课程,理解技术美术如何服务于艺术表达,如兰伯特模型的灵活运用。 对于Shader,从SRP到URP的转换路径有指导意义,比如官方资源和社区分享的文章。继续深入,光追技术的学习从基础的raytracing系列文章开始,然后是Unity的光追实现,以及全局光照和路径追踪等技术。
PBR(物理基础渲染)是另一个重要领域,包括光照模型、阴影处理等,推荐的书籍和实践指南不容忽视。
在实时渲染和图形基础渲染管线的学习中,Unity的官方资源和Games系列教程是关键,以及GAMES课程的实践作业。 理解计算机图形学的数学基础,如几何、光影、纹理处理等,以及提升英文阅读能力来阅读专业文献,是持续学习的关键。 论文阅读和GDC资源的获取也至关重要,积累知识,扎实基础,spark 源码 豆瓣从经典论文和官方教程开始,逐渐扩大视野。 最后,建议多实践,深入理解渲染管线,关注技术美术的Todo和社区分享,持续探索和学习。SRP合批问题
在项目中,使用SRP进行合批时,发现除了Cull和Keywords外,其他因素也可能导致合批失败。例如,使用不同材质的物体之间位置穿插也会造成合批失败。一个场景中如果有三个Shader,三个物体分别使用这三种Shader,无论它们的穿插顺序如何,理论上只需要三个SRP Batch就能完成渲染,但实际上可能会被拆分成4-6个Batch。这需要开发者找出合适的渲染顺序或使用其他方法解决。
场景中常驻的场景相机和UI相机可能导致动态加载的Prefab自带的渲染相机与之前的渲染结果叠加出现问题,尤其是在移动平台上。尽管Overlay相机可以实现正确的叠加,但Base相机却出现花屏现象。这是因为动态加载的Base相机在设置渲染目标时,colorBuffer的Load Action没有正确调整。目前解决方案是将动态相机设置为Overlay,并通过代码将它放入常驻场景相机的CameraStack中。如果在URP下查看Blit操作时发现问题,可以考虑使用类似RenderTexture.DiscardContents的方法来解决。
关于粒子系统是否支持GPU Instancing,答案是肯定的,但在Unity 版本中,粒子系统必须以Mesh模式使用GPU Instancing。粒子系统的实现与GUI的实现类似,数据放在VBO或UBO上效率提升不大,且限制了通用性。对于URP下场景和UI分辨率分离的需求,可以通过将3D场景渲染到RT中,再将RT作为RawImage的Texture渲染到UI中来实现,或者在URP源码中给每个Camera添加修改RenderScale的sqlhelper类源码组件。
软件设计原则
软件设计七大原则概述:
软件设计包含两大一般性原则:YAGNI(你不会需要它)和两个核心原则:开闭原则(Open Close Principle, OCP)和依赖倒置原则(Dependence Inversion Principle, DIP)。
开闭原则(OCP)强调模块的扩展开放,修改封闭。它包含两个关键特性:模块的行为可扩展以满足需求,源代码不可修改。通过避免修改现有代码,OCP确保了系统的稳定性和复用性。改进设计引入了动态变化,例如价格策略的处理,通过引入关联类(PricePolicy)实现。
依赖倒置原则(DIP)主张依赖抽象而非具体实现,确保了系统的稳定性和可维护性。这类似于物理中的稳定系统,其中基础的稳定性决定了整体的稳定性。
单一职责原则(SRP)强调一个类只能有一个职责。通过将Modem设计拆分为Connnection和DataChannel,避免了类中多个职责的复杂性,提高了系统可维护性。
接口隔离原则(ISP)强调使用接口继承而非实现继承,通过接口只暴露必要操作,隐藏不相关操作。这样,客户端只需关注其需要的部分,提高了系统的灵活性和可维护性。
迪米特法则(LoD)强调对象间最少的了解,减少类间的耦合。通过限制成员朋友类的了解,实现了低耦合的设计。
里氏替换原则(LSP)确保子类可以替换父类,且程序行为不变。这要求子类遵循父类的前置和后置条件,避免添加额外限制,保证了继承的合理性。
CARP(Composite/Aggregate Reuse Principle)强调使用合成/聚合实现对象间的重用,避免多重继承带来的问题。通过聚合和组合,实现对象间的独立性,降低了类间的耦合度。
遵循这些原则,可以构建灵活、svm 并行源码可扩展和易于维护的软件系统,提高代码质量,减少错误和复杂性。
Unity的URP HDRP等SRP管线详解(包含源码分析)
SRP为可编程渲染管线,Unity中通过C#能自定义多种渲染管线,包含通用管线(URP)与高清管线(HDRP)。
URP通用管线,综合性能与表现力,适合手游或端游场景;HDRP为高清管线,拥有极致表现力,适用于端游、影视制作。
大体结构包括:RenderPipelineAsset、RenderPipelines、Renderer与RenderPass。RenderFeature为辅助组件,配置特定事件并注入到Renderer中的时机进行执行。
具体分析:在RenderPipelineAsset中,创建多条渲染管线。RenderPipelines则构成具体渲染流程,于每一帧调用Render()处理本帧命令,绘制图像。
Renderer维护ScriptableRenderPass列表,每帧通过SetUp()注入Pass执行渲染过程,最终得到序列化结果(ScriptableRendererData)。
RenderPass实现具体渲染逻辑,其Execute()函数执行于每一帧,实现渲染功能。
RenderFeature主要提供“空壳”结构,通过配置RenderPassEvent并注入实例到Renderer中。
总结:理解URP架构,能掌握渲染管线核心。后续将继续分享渲染案例、实用工具等内容。
Catlike Coding Custom SRP学习之旅——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。在这里,我们使用一个简单的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。我们在片元着色器中,对原画面进行采样,并且由于其不存在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上,即直接让两张不同尺寸的以相同尺寸采样,叠加颜色,这一步也叫上采样。
2.5 双三次上采样(Bicubic Upsampling)
在上采样过程中,我们使用了双线性采样,这样可能依然会导致块状的模糊效果,因此我们可以增加双三次采样Bicubic Sampling的可选项,以此提供更高质量的上采样。
2.6 半分辨率(Half Resolution)
由于Bloom会渲染多张Pyramid,因此其消耗是比较大的,其实我们完全没必要从初始分辨率开始降采样,从一半的分辨率开始采样的效果也很好。
2.7 阈值(Threshold)
目前,我们对整个RT的每个像素都进行了增亮,这让这个画面看起来过曝了一般,但其实Bloom只需要对亮的区域增亮,本身暗的地方就不需要增亮了。
2.8 强度(Intensity)
最后,提供一个Intensity选项,控制Bloom的整体强度。
结束语
大功告成,我们在渲染管线中增加了后处理堆栈,以及实现了一个Bloom效果,其实在做完这篇之后,我觉得这个渲染管线才算基本上达成了大部分需要的功能,也算是一个里程碑吧。
SRP安全远程密码
SRP(Secure Remote Password)安全远程密码是Stanford大学计算机系开发的一个开放源代码认证协议。它提供基于口令认证和会话加密的安全机制,而无需用户或网管参与密钥管理或分发。使用SRP的客户机/服务器在网络上传送密码时,能有效防止被动或主动网络入侵者使用字典攻击。
在远程登录软件中,明文密码传送是最大的安全漏洞。任何简单嗅探器(sniffer)工具都可以轻易获取远程系统的密钥。然而,SRP能抵制这类“password sniffing”攻击。在使用SRP认证的会话中,监听者无法监视到任何在网络中传送的口令。
此外,SRP还能有效抵御字典攻击。单纯保护简单的密码监听是不够的,攻击者可能会使用强力攻击,如字典攻击,跟踪整个会话过程并与字典中的普通密码进行比对。而SRP在进行口令安全处理之前,就要求攻击者执行一次不可能的大量计算,以此阻止强力攻击。
SRP对于终端用户是完全透明的。用户只需使用自己的口令作为密钥,无须管理“密钥链”、“证书”或“票据”。同时,SRP对于管理者来说也易于实施。无需维护“密钥服务器”、“证书认证”或“认证服务器”等概念。用户口令文件与标准Unix口令文件并存,软件协同维护口令一致性。
在认证过程中,SRP交换一个加密密钥,这使得登陆会话可以被加密,抵抗网络监听和恶意篡改。用户远程阅读信笺时,信息默认以位加密,这一过程在用户登录后自动处理,用户无需关心是否需要加密。相比基于公私密钥的认证方式,SRP不使用加密进行认证,因此速度更快、更安全。
SRP默认使用位的CAST加密算法,RFC中定义。标准SRP也支持位DES和位DES,高级支持三重DES加密。本文将详细指导如何在Redhat Linux 9.0环境下建立基于SRP的Telnet服务器。
2024-11-18 22:28
2024-11-18 22:06
2024-11-18 21:57
2024-11-18 21:39
2024-11-18 21:24
2024-11-18 21:09
2024-11-18 20:51
2024-11-18 20:37