自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 【Games101】Transformation

线性代数相关向量点乘 → 获得方向 向量叉乘 → 获得左右&内外 线性变换:保持网格平行并等距分布的变换线性变换具有的性质:所有的线仍是直线(包括对角线) 原点还在原点,不发生移动我们如何理解Transformation(变换)?简单的,我们可以将其理解为一系列的步骤,通过这些步骤,得以实现从三维空间到二维影像的转变。一、二维/三维变换 缩放(Scale) 对称(Reflection) 切变(Shea...

2022-02-14 18:44:33 3676

原创 【Shader】后处理之Bloom效果实现

实现路径分析:提取发光区域的mask 对mask进行多次模糊处理,得到BloomTexture 将BloomTexture于MainTexture进行叠加 利用ToneMapping还原亮度范围一、BlurShader:主要分为4个Pass进行操作,取阈值 → 双重模糊 → 图像合并: // Pass0: 取阈值,做mask half4 frag_PreFilter (v2f_img i) : SV_Target { half4 col = t..

2022-01-27 20:21:55 1916

原创 【Shader】后处理之模糊算法

一、方框模糊(Box Blur)

2022-01-26 21:54:17 5386

原创 【Shader】后处理之屏幕映射

一、计算屏幕空间坐标一个模型的MVP变换,即从模型空间(M)转换到观察空间(V)再转换到裁剪空间(P),然后将投影完成的标准立方体通过屏幕映射(视口变换)转换成屏幕坐标进行显示。下图即标准立方体到屏幕空间的映射过程。Clip Space → Screen Space的基本方法v2f vert (appdata v){ o.screen_pos = o.pos; //_ProjectionParams.x用于校正不同平台下的uv坐标...

2022-01-24 20:47:36 3058

原创 【Shader】次表面散射与各向异性高光

一、次表面散射(Sub-Surface-Scattering)次表面散射,简称3S,用来描述光线穿过透明/半透明表面时发生散射的照明现象,是指光从表面进入物体经过内部散射,然后又通过物体表面的其他顶点出射的光线传递过程。次表面散射主要用于模拟不完全透明材质内部表现出来的一种真实光影特效, 主要用于模拟蜡烛、大理石、玉石、灯光照射下的人的皮肤等材质。如何利用一张LUT贴图模拟3S效果? → 只需通过Lambert光照模型与自定义滑块采样其uv//需...

2022-01-23 23:11:35 2040

原创 【Shader】通用光照框架的构建

一个完整的光照框架可初步分为以下四部分:①直接光的漫反射、② 直接光的镜面反射、③间接光的漫反射、④间接光的镜面反射其中,对于金属材质来说,可以粗略的只考虑其镜面反射部分,即只具有②直接光的镜面反射与④间接光的镜面反射。对于片元Shader的代码框架来说,可分为以下六部分来进行构建:①所需使用向量的准备//vector preparedhalf3 nDir = normalize(i.normal_D...

2022-01-23 19:20:26 281

原创 【Shader】基于图像的光照(Image Based Lighting,IBL)

一、立方体贴图(CubeMap)CubeMap是什么?CubeMap是一个由六个独立的正方形纹理组成的集合,它将多个纹理组合起来映射到一个单一纹理,通常被用来作为具有反射属性物体的反射源。CubeMap如何实现?→ 采样反射向量与立方体的交点//Shader实现对CubeMap采样samplerCUBE _CubeMap;float4 _CubeMap_HDR;fixed4 frag (v2f i) : SV_Target{ half3...

2022-01-18 21:28:00 2141

原创 【Shader】色调映射、视差贴图与实时阴影

一、色调映射(Tone - Mapping) 为什么需要色调映射? 高动态范围图像(HDR)能够达到甚至更高数量级的亮度,而一般显示器只能表示的亮度值,因此往往会因为光照强度过大而造成的过暗/过曝光问题。色调映射在做什么?色调映射能够将原本大幅度的亮度与对比度衰减至显示器可以显示的范围内,同时仍然保存有原本图像细节与颜色等重要信息。色调映射的一种函数使用小技巧(我不理解,但我先记)//对Diffuse接收的color做线性空间的转换b...

2022-01-17 18:09:23 1273

原创 【Shader】光源获取与法线贴图

一、光照计算不同光源数据获取 + 光源衰减计算//宏定义判断光源类型#if defined(DIRECTIONAL)float3 lDir = normalize(_WorldSpaceLightPos0.xyz);float attuention = 1.0;#elif defined(POINT)float3 lDir = normalize(_WorldSpaceLightPos0.xyz - i.pos_WS);float distance = length(_WorldSpac

2022-01-15 19:41:09 878

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除