博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DirectX11 漫反射光
阅读量:4086 次
发布时间:2019-05-25

本文共 807 字,大约阅读时间需要 2 分钟。

漫反射光

1. 漫反射光是什么?
考虑下图所示的粗糙表面。当光线照射在这样一个表面上时,会在不同的随机方向上散开;我们将这种反射称为漫反射(diffuse reflection)。在我们的光照模型中模拟了灯光与表面之间的这种相互作用,我们约定线会在表面的各个方向上均匀散开;所以,无论观察点(眼睛的位置)在哪里,我们总能看到漫反射光。也就是,我们不需要考虑观察点的位置(即,漫反射光的计算与观察点的位置无关),无论观察点在哪里,我们总能看到表面上的点的颜色。

这里写图片描述

当照射一个漫反射表面时,入射光会在随机方向上散开。在显微镜下,很多物体表面都是粗糙的。

2. 漫反射光计算

我们将漫反射光的计算过程分为两个部分。在第一部分中,我们指定一个入射光颜色和一个漫反射材质颜色。漫反射材质指定了表面所能反射和吸收的漫反射光的总量;它使用分量乘法来实现。例如,表面反射50%的红光、100%的绿和 75%的蓝光,入射光是强度为80%的白光。那么,入射光颜色ld = (0.8, 0.8, 0.8),漫反射材质颜色md = (0.5, 1.0, 0.75);反射光的总量为:

这里写图片描述

注意:表面上的漫反射材质可以变化;也就是,表面上的每个点可以有不同的漫反射材质颜色。例如,当渲染一个由沙滩、草地、土地和雪地构成的地形时,地形的每个部分反射和吸收的线数量是不一样的,所以材质颜色必须根据地形表面而变化。在本书的Direct3D光照实现中,我们为每个顶点指定一个不同的漫反射材质颜色。在光栅化阶段中,这些顶点属性会在三角形表面上的进行插值。通过一方式,三角形网格表面上的每个点都会得到一个漫反射材质颜色。我们直接引用兰伯特余弦定理(根据表面法线与光照向量之间的夹角来控制表面的受光强度)来实现漫反射光照计算。设ld入射光颜色,md为漫反射材质颜色,kd = max(L∙n ,0),其中L是光线向量,n是表面法线。则反射回来的漫反射光颜色为:

这里写图片描述

你可能感兴趣的文章
Javaweb中PO BO VO DTO POJO DAO DO概念理解
查看>>
Hive架构与源码分析(整理版)
查看>>
Flink集成Iceberg简介
查看>>
Openldap开启TLS
查看>>
Openldap集成Kerberos
查看>>
Ranger集成Kerberos
查看>>
solr集成kerberos认证
查看>>
Flink安装部署
查看>>
Spark Submitting Applications浅析
查看>>
Spark源码解析(一) —— Spark-shell浅析
查看>>
Spark设计理念与基本架构
查看>>
大数据自动化安装部署方案(一)——集群系统环境设置
查看>>
npm离线安装插件
查看>>
zookeeper安装使用及工作原理分析
查看>>
RPC原理解析
查看>>
Hive基本命令解析
查看>>
Spark Streaming编程指南
查看>>
Spark设计理念与基本架构
查看>>
linux常用命令说明
查看>>
Structured Streaming Programming Guide结构化流编程指南
查看>>