菲涅尔

《The Cg Tutorial》阅读笔记——环境贴图 Environment Mapping

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-06 04:29:18
本文为大便一箩筐的原创内容,转载请注明出处,谢谢: http://www.cnblogs.com/dbylk/p/4969956.html 环境贴图 Environment Mapping 一、简介 环境贴图是一种用于模拟高度反射物体表面反映周围环境的技术,使用环境贴图技术的前提条件是假定环境到物体的距离无限远。 由于环境贴图只关注方向而忽略了位置,因此它在平坦反射表面上的效果很不真实,相对的,它在曲面上可以取得较好的视觉效果。 二、立方贴图纹理 Cube Map Textures 1. 简介 立方贴图纹理由六张恰好构成一个立方体的正方形纹理图像组成,它们形成了一个全方位图像,使我们能够利用它们实现环境映射。 访问立方贴图纹理需要使用一个表示3D方向向量的三元纹理坐标。将这个纹理坐标看作一个从立方体中心发射的射线,它必然会与立方体六个面中的一个相交,而立方纹理贴图将会返回交点过滤后的色彩。 2. 生成立方贴图纹理 【方法一】 在坐标原点使用摄像机向XYZ轴正负方向各拍一张快照,摄像机的取景角度必须为90度,长宽比必须为1:1。 【方法二】 使用其他电脑软件生成或直接拍摄真实照片。 三、数学表达 1. 如何计算反射向量 Reflected Vector R = I - 2 * N * (N · I) R为反射光方向的单位向量 I为入射光方向的单位向量 N为物体表面法线的单位向量 2.

光照演示程序(第八章内容)

a 夏天 提交于 2019-12-05 05:30:20
光照演示程序(第八章内容) 8.14、光照演示程序 本章演示程序基于上一章的“陆地与波浪演示程序”的基础上构建而成的,其中利用了一个方向光来表示太阳,用户可以使用方向键来控制太阳的方向。 8.14.1、顶点格式 光照的计算需要依赖于表面法线,所以我们会 在顶点层级定义法线 ,方便在光栅化过程中进行插值计算,由此展开逐像素光照。同时我们也 不需要指定顶点的颜色 ,而是以每一个像素应用光照方程之后所生成的像素颜色代替指定顶点颜色。下面是顶点结构体: //c++顶点结构体 struct Vertex { DirectX::XMFLOAT3 Pos; DirectX::XMFLOAT3 Noraml; } //对应的HLSL顶点结构体 struct VertexIn { float3 PosL : POSITION; float3 NormalL : NORMAL; } //新的输入布局描述 mInputLayout = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 }, { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D12_INPUT_CLASSIFICATION_PER

Matcap Shader 详解【3】 - 利用Matcap实现基本PBR光照模型

匿名 (未验证) 提交于 2019-12-03 00:22:01
前言 第一篇文章 中提到 基础Matcap 的另一个缺陷是缺少经典BPR所具备的一些属性,本文的目的便是为了探讨如何解决这个缺陷。 第二篇文章 中,我们看到在没有使用 固有色(Albedo)贴图 时,Matcap的确能呈现出PBR效果,但与固有色叠加后,便会显得暗淡――这源于漫反射衰减与高光的缺失。 另一方面,Matcap是完全不考虑光照影响的渲染方法,因此也不存在能量守恒,只能通过采样贴图的绘制做出能量守恒的效果,所以不是真正的PBR,也因此能做出很多PBR无法实现的效果。 漫反射补偿 很多已有的Matcap采样图都是BPR渲染的结果,我们获得的固有色贴图也是衰减后的状态(比真正的固有色暗)。当这两种贴图采样相乘后,自然会显得很暗,这个问题也很容易处理,便是补偿损失的漫反射强度――对Matcap Diffuse采样图乘以大于1的数值,如下图所示: 高光 补偿后就不存在亮度的问题了,但这里还存在一个问题――高光颜色受到固有色影响。 本质原因在于MatcapDiffuse贴图理论上只用于计算漫反射以及次表面散射等现象(乘法)。但高光的计算应使用加法。 所以只需要在现有着色器上再加入一个 高光Matcap采样图,并把它加到现有的结果上。 (注:PS中的线性减淡就是加法) 上图中高光的颜色就正常了许多。这里还要说明一点

BRDF详解

僤鯓⒐⒋嵵緔 提交于 2019-11-27 21:19:35
注:转载来自一个大佬的日记总结 【《Real-Time Rendering 3rd》 提炼总结】(六) 第七章 · 高级着色:BRDF及相关技术 在计算机图形学中,BRDF(Bidirectional Reflectance Distribution Function,双向反射分布函数)是真实感图形学中最核心的概念之一,它描述的是物体表面将光能从任何一个入射方向反射到任何一个视点方向的反射特性,即入射光线经过某个表面反射后如何在各个出射方向上分布。BRDF模型是绝大多数图形学算法中用于描述光反射现象的基本模型。 这篇文章,将专注于总结和提炼《Real-Time Rendering 3rd》(实时渲染图形学第三版)中第七章“Advanced Shading · 高级着色”的内容,并对这章中介绍BRDF的内容进行适当补充和引申,构成全文,成为一个对BRDF进行近乎系统式总结的文章。 图1 基于BRDF渲染的场景图 ©Disney 2014.《超能陆战队》 一、导读 简而言之,通过阅读这篇总结式文章,你将对BRDF的以下要点有所了解: 一、BRDF的前置知识 · 数学篇 球面坐标 Spherical Coordinate 立体角 Solid Angle 投影面积 Foreshortened Area 二、BRDF前置知识 · 辐射度量学篇 辐射度量学基本参数表格 辐射通量/光通量