Posts

Http的报头、消息返回码等细节一览表

** 请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com。** 1 HTTP头部 1.1 Requests Header Header 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5 Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。 Accept-Encoding: compress, gzip Accept-Language 浏览器可接受的语言 Accept-Language: en,zh Accept-Ranges 可以请求网页实体的一个或者多个子范围字段 Accept-Ranges: bytes Authorization HTTP授权的授权证书 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== Cache-Control 指定请求和响应遵循的缓存机制 Cache-Control: no-cache Connection 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) Connection: close Cookie HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 Cookie: $Version=1; Skin=new; Content-Length 请求的内容长度 Content-Length: 348 Content-Type 请求的与实体对应的MIME信息 Content-Type: application/x-www-form-urlencoded Date 请求发送的日期和时间 Date: Tue, 15 Nov 2010 08:12:31 GMT Expect 请求的特定的服务器行为 Expect: 100-continue From 发出请求的用户的Email From: user@email.

八面体(Octahedron)及其坐标映射

八面体(Octahedron)及其坐标映射 八面体是一种 正八面体几何结构,它可以用于 映射方向向量(3D)到2D,以便进行 高效的纹理存储和查询。在 Impostor 渲染 中,八面体映射(Octahedral Mapping)是一种将 球面方向向量 投影到 二维平面 的方法,广泛用于 环境贴图、光照计算、Impostor 纹理存储 等。 1. 为什么使用八面体坐标? 通常,我们用一个 单位向量(( x, y, z ))表示方向。但如果要将方向存储在 2D 纹理(如 Impostor 贴图)中,我们需要找到一种 从 3D 到 2D 的映射方法。 常见的映射方法: 球面坐标(Spherical Coordinates):容易产生极点扭曲(pole distortion)。 立方体映射(Cubemap):存储效率不高,容易出现采样接缝(seams)。 八面体映射(Octahedral Mapping): 相比 球面坐标,它没有极点扭曲问题。 相比 立方体映射,它存储利用率高达 100%,没有浪费区域。 计算简单,适用于 GPU 计算。 因此,八面体映射是一种高效的 3D → 2D 映射 方法。 2. 八面体坐标转换 八面体映射的核心思想是 将单位球的上、下两个半球折叠到一个正方形上。 (1) 3D 方向向量到八面体坐标(VectortoOctahedron) 假设有一个 单位方向向量: [ V = (x, y, z) ] 步骤:

伪内部空间映射的相关文档

请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com CSDN上的参考网页 Unity Shader Interior mapping 内部映射 CSDN上的案例学习——Interior Mapping 室内映射(假室内效果) CSDN上的UE5黑客帝国3d print假室内的一些使用记录 unity 跟随目标_使用Cubemap在Unity中制作虚拟室内效果 知乎上的参考网页 案例学习——Interior Mapping 室内映射(假室内效果) 一种假室内(Fake Interior)效果的实现,这种是带上了室内深度效果的,即每个室内的深度纵深是不一样的。 其他 Joost van Dongen的论文《Interior Mapping A new techique for rendering realistic buildings》 下面的这份代码是《一种假室内(Fake Interior)效果的实现》中提到的代码实现 Shader "Custom/FakeRoom" { Properties { [NoScaleOffset]_WindowTex ("Window Texture", 2D) = "black" {} _RoomTex ("Room Texture", CUBE) = ""{} _RoomDepth ("Room Depth", Range(0.01, 1)) = 1.0 } SubShader { Tags { "RenderType"="Opaque" } Cull Back Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.

Volumetric Clouds Write-up(翻译)

原文地址 The basis of this effect is drawing a vertical stack of quads, each one showing a slice of the cloud. The cloud texture itself is just a world-mapped, top-down animated noise that is piped into opacity. 这种效果的基础是绘制一组垂直堆叠的四边形(简称为:四边形堆栈,vertical stack of quads),每个四边形都显示一片云。 云纹理本身只是一个世界映射的(world-mapped)、自上而下的(top-down)的动画噪声,它通过渲染,管道传输到不透明度中。 To animate the noise, I use the same trick that I use in countless other shaders to create a natural looking motion that appears free of obvious repetition, which is to blend the noise with either a copy of itself with a different UV scale, or a different noise texture, and pan these two noise textures against each other in opposite directions, and then blend them together through multiplication or some other desired blend mode.

Unity纹理压缩格式详解

请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com Crunch compression(紧凑压缩) Crunch compression是一种建筑在DXT或ETC压缩之上的压缩格式,提供额外的可变比特率压缩。当Unity加载紧凑压缩的纹理时,它会在CPU上将纹理解压缩为DXT或 ETC,然后将DXT或ETC压缩的纹理数据上传到GPU。 紧凑压缩有助于纹理使用尽可能少的磁盘空间,但对运行时内存使用没有影响。紧凑压缩 纹理可能需要很长时间来压缩,但运行时的解压缩速度相当快。您可以调整紧凑压缩的有损程度,以在文件大小和质量之间取得平衡。 Unity的各种纹理压缩格式信息 参考网页 聊聊 Unity 的 Alpha Is Transparency 有什么用 What does the “alpha is transparency” setting actually do? 光照贴图的中的编码格式

从半透明模型的描边到URP Multipass Rendering

请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com 卡通渲染技术中,描边的实现的有多种做法,有基于后处理实现,也有基于非后处理,通过多次绘制模型的方法实现。 通过多次绘制模型的实现,方法无非就是: 绘制模型本体,同时写入深度值。 让模型顶点沿着法线外扩一定的偏移量,即让模型膨胀一些 全用描边的颜色绘制膨胀过的模型,且,在绘制时,使用cull front,即只绘制模型的背向摄像机面。在第1步中因为绘制模型本体时已经写入深度值。在本步骤中只要不改变深度测试函数的方式,那么除了膨胀部分之外,是无法写入像素的,能写入的部分,便形成了边缘。 上述的方式,一般应用于不透明的材质上。如果是半透明的材质的话就有问题,因为在第1步绘制半透明材质时,一般是不写入深度值的。那么第3步在绘制膨胀模型时,模型背部的地方就会被绘制上去。 解决这个问题有很多,可以利用stencil test的方式。也可以在第一步绘制,不绘制任何颜色,只写入深度,然后再绘制模型,最后再绘制描边。后一种方法,如果用Unity内置管线,大约就是这个样子: Shader "Unlit/半透明" { Properties { _Diffuse("Diffuse",Color) = (1,1,1,1) // 漫反射 _MainTex("MainTex",2D) = "white"{} // 2D纹理贴图 _AlphaScale("Alpha Scale",Range(0,1)) = 1 // 控制Alpha参数 } SubShader { Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } //渲染顺序设置Transparent LOD 100 // 用两个pass通道来处理,防止出现渲染错误,第一个pass通道 // 每个pass通道都会渲染一次 Pass { ZWrite On // 注意这里:写入深度 为了确认渲染顺序 ColorMask 0 // 掩码遮罩代表这个pass通道不写入任何颜色值 } Pass // 第二个pass通道 { Tags{"LightMode" = "ForwardBase"} ZWrite Off // 注意这里:关闭ZWrite(深度写入) Blend SrcAlpha OneMinusSrcAlpha // 源颜色因子 正常透明混合 CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.

彻底弄懂Unity3D的光照模式,光照贴图和光探针(持续更新)

请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com 1 光源的Light Mode 光源的Light Mode分为Realtime,Baked,Mixed四种。 Realtime类型 本类型的光源,会根据Shadow Distance项指定的值,以及当前摄像机的位置值,去敲定本光源是否给物体投下阴影。在URP中,Shadow Distance值在Universl Render Pipeline Asset中指定。 在旧管线中,如果启用了【Realtime Global Illumination】选项,realtime光源仅贡献实时的直接光照部分。正因为如此,所以由这种光源产生的影子是纯黑的,不会受别的间接光照的影响 在自定义的管线中,实时光源可以对实时的间接光照部分产生贡献。 Baked类型 Unity把Baked类型的光源产生的照明和阴影信息,烘焙到lightmap或者light probe中。 baked类型的光源,只贡献了漫反射部分的光照,不贡献镜面高光部分的光照。 只有标识为static的GameObject才接受baked类型的光源产生的照明和阴影。 Mixed类型 mixed类型,顾名思义,即是整合了realtime和baked两种模式的特点。采用mixed类型的光源,可以在其贡献的直接光照部分,使用realtime的模式实现,间接光照部分,使用baked模式实现。 在场景中,mixed类型的光源的行为,依赖于【Lighting】窗口中的【Lighting Mode】属性设置。不同的设置,会产生不同的视觉保真度,以及产生不同的性能消耗。 在运行时,可以更改mixed类型的光源的属性。但仅对realtime部分的属性生效。 2【Lighting】窗口中的【Lighting Mode】属性 直接光照的实现模式 间接光照的实现模式 阴影的实现模式 适用机型 Baked Indirect real-time baked real-time 中端机型 Shadowmask real-time baked 部分baked,部分real-time 中高端机型 Subtractive baked baked 只对一个平行光渲染real-time阴影 低端机型 Baked Indirect光照模式的一些细节 内置管线,URP,HDRP,都支持本模式 在本模式下,Mixed类型的光源照射到GameObject时,GameObject会收到以下的光影信息如下表: Shadowmask光照模式的一些细节 与baked indirect模式类似,Shadowmask模式也结合了实时直接光照和烘焙间接光照。但两者不同之处在于在于渲染阴影的方式。Shadowmask模式允许Unity在运行时结合baked阴影和real-time阴影,并在远处渲染阴影。它通过使用额外的光照贴图 纹理称为阴影蒙版,并通过将附加信息存储在光探头。 Shadowmask模式提供所有模式下保真度最高的阴影,但性能成本和内存要求最高。 不同渲染管线对Shadowmask模式的支持程度 管线类型 是否支持 内置管线 支持 URP 从10.1版本开始支持 HDRP 支持 Shadowmask模式有两种,一种是Distance Shadowmask,另一种是Shadowmask。在Project Setting界面的Quality选项可以指定,如下图所示: