文档章节

各向异性着色

o
 osc_a22drz29
发布于 2019/03/21 10:46
字数 348
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

        各向异性着色是一种逐像素颜色计算方案。在各向异性着色方案中,镜面光在表面各个方向上并非以均等方式反射。其原因在于:材质在各个方向上包含不同的属性,且毛皮、头发以及拉丝金属均具有此类特征。

  传统的镜面反射数学公式,我们一般是采用:

            S = Ls * Ms *(R * E)SH

      而各向异性着色方案,我们采用以下数学模型:

            dl = T * L

            de = T * E

            S = Ls * Ms * (dl * de + (√(1-dl * dl) * √(1 - de * de))SH)

      其中,T表示切向量(如果不明白切向量是什么,自己去补充该部分的数学知识,在这里不做赘述),L表示光线向量,E表示眼睛向量,SH表示光泽度。

  下面我将展示一段片元着色器,并假设切向值、光源、眼睛向量以及vColor值均在对应的顶点着色器中计算完毕。另外,各向异性着色参数uKa、uKd、以及uKs假设已传递至当前着色器中,且颜色值vColor用与ADS光照模型中的全部3个变量之上。

  vec3 ambient = Vcolor.rgb;

  float dl = dot(That, Lhat);

  vec3 diffuse = sqrt(1. - dl * dl) * vColor.rgb;

  float de = (That , Ehat);

  vec3 spec = uLightColor * pow(dl * de + sqrt(1. - dl * dl) * sqrt(1. - de * de), uShininess);

  fFragColor = vec4(uka * ambient + ukd * diffuse + uks * spec , 1.);

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
物理渲染学习笔记(三)——Cook-Torrance微表面模型

从 Phong 到 GGX, 光照模型林林总总,一直没能找机会梳理一遍, 这几天依次都自己实现了一遍,也正好总结下。 Microfacet 普通的着色模型假设着色的区域是一个平滑的表面,表面的方向可以用...

NotMz
03/31
0
0
DirectX11 With Windows SDK--09 纹理映射与采样器状态

前言 在之前的DirectX SDK中,纹理的读取使用的是函数,现在在Windows SDK中已经没有这些函数,我们需要找到和这两个库来读取DDS位图和WIC位图 DirectX11 With Windows SDK完整目录 Github项...

osc_whnk6pd5
2018/07/12
1
0
DX11 Without DirectX SDK--09 纹理映射

前言 回到 DirectX11--使用Windows SDK来进行开发:http://www.cnblogs.com/X-Jun/p/9028764.html 在之前的DirectX SDK中,纹理的读取使用的是函数,现在在Windows SDK中已经没有这些函数,我...

X_Jun
2018/07/12
0
0
三维设计专用技术名词解释

这篇文章对于shader的理解有所帮助。 Mapping(贴图处理)   Texture Mapping (纹理贴图)   在物体着色方面最引人注意、也是最拟真的方法,同时也多为目前的游戏软件所采用。一张平面图像(...

☀宝宝合凤凰☀
2010/02/07
0
0
图像各向异性滤波

图像各向异性滤波 各向异性概念 各向异性(英文名称:anisotropy)是指材料在各方向的力学和物理性能呈现差异的特性。晶体的各向异性即沿晶格的不同方向,原子排列的周期性和疏密程度不尽相同...

gloomyfish
03/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

es集群笔记

es 集群的默认配置是当集群中的某个节点磁盘达到使用率为 85% 的时候, 就不会在该节点进行创建副本, 当磁盘使用率达到 90% 的时候, 尝试将该节点的副本重分配到其他节点. 当磁盘使用率达到 ...

gaolongquan
8分钟前
4
0
VS Code编写Vue过程中出现空格不规范报错的问题

报错内容: 解决办法: 1.注释或删除这些代码 注释掉之后(重启vue服务),再进行编写的时候,空格不规范的情况下就不会再报错了。 2.如果没在webpack.dev.conf.js文件中找到注释代码就在webpack...

安然_oschina
11分钟前
9
0
域名防封_域名防红_微信域名防拦截

最近微信开始大封杀,不知道原因是什么,可能是因为违规网站太多了吧,很多网站都被错杀了,下面我们聊一下怎样才能避免域名被封杀呢。 在各种不同的域名当中,能够做出了更适合的选择,这些...

戚馨逸
15分钟前
13
0
数据结构(六)——循环链表

一、循序链表简介 1、循环链表的定义 循环链表的任意元素都有一个前驱和一个后继,所有数据元素在关系上构成逻辑上的环。 循环链表是一种特殊的单链表,尾结点的指针指向首结点的地址。 循环...

rainbowcode
18分钟前
13
0
六边形寻路格子绘制

using System.Collections;using System.Collections.Generic;using UnityEngine;public class AdventureIsland : MonoBehaviour{ static AdventureIsland instante; pu......

江湖令
19分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部