OpenGL ES 2.0 光照
基本的光照
光照分成了3种组成元素(3个通道):环境光、散射光以及镜面光。
材质的反射系数实际指的就是物体被照射处的颜色,散射光强度指的是散射光中的RGB(红、绿、蓝)3个色彩通道的强度。
环境光
指从四面八方照射到物体上,全方位360都均匀的光。
环境光照结果=材质的反射系数X环境光强度
散射光
散射光具体代表的是现实世界中粗燥的物体表面被光照射时,反射光在各个方向基本均匀("漫反射")的情况。
散射光最终强度=散射光强度Xmax(cos(入射角),0)
散射光照射结果=材质的反射系数X散射光最终强度。
镜面光
现实世界中当光滑表面被照射时会有方向很集中的反射光。
镜面光最终强度=镜面光强度Xmax(x,(cos(半向量与法向量的夹角))倾斜度)
镜面光照射结果=材质的反射系数X镜面光最终强度
定位光:在某一个固定的位置,发出的光向四周发散。
定向光:定位光照射的发出的光线平行。
法向量
法向量是空间解析几何的一个概念,垂直于平面的直线所表示的向量为该平面的法向量。
点法向量策略
仅认为存在一个顶点,其法向量的,其法向量取其所属面放向量的平均值,比较适合平滑曲面
面法向量策略
在光照顶点位置放置多个顶点,每个顶点看作仅属于一个面。各个顶点的法向量即为其属于的面的法向量。比较适合棱角分明的物体。
每顶点计算:基于顶点着色器计算(效率高)
每片元计算:基于片元着色器计算(光照效果好)
OpenGL ES 2.0 光照的更多相关文章
- 在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping)
在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping) 视差贴图 最近一直在研究如何在我的 iPad 2(只支持 OpenGL ES 2.0, 不支持 3.0) 上实现 视 ...
- OpenGL ES 3.0之Uniform详解
Uniform是变量类型的一种修饰符,是OpenGL ES 中被着色器中的常量值,使用存储各种着色器需要的数据,例如:转换矩阵.光照参数或者颜色. uniform 的空间被顶点着色器和片段着色器分享 ...
- OpenGL ES 3.0之Shading Language(八)
每个OpenGL ES 3.0程序要求一个顶点着色器和一个片段着色器去渲染一个图形.着色器概念是API 的中心,本篇将介绍着色器语言部分包含下面几项 1.变量和变量类型 2.矢量和矩阵创建及选择 3. ...
- 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...
- Beginning OpenGL ES 2.0 with GLKit Part 1
Update 10/24/12: If you’d like a new version of this tutorial fully updated for iOS 6 and Xcode 4.5, ...
- OpenGL ES 3.0 基础知识
首先要了解OpenGL的图形管线有哪些内容,再分别去了解其中的相关的关系: 管线分别包括了顶点缓冲区/数组对象,定点着色器,纹理,片段着色器,变换反馈,图元装配,光栅化,逐片段操作,帧缓冲区.其中顶点 ...
- OpenGL ES 3.0 点,线,三角形绘制形式总结
OpenGL ES 3.0 顶点 -1, 1, 0, -0.5f, 0, 0, 0, -1, 0, -1, 0, 0, 0.5f, 0, 0, 1, -1, ...
- Android OpenGL ES 3.0 纹理应用
本文主要演示OpenGL ES 3.0 纹理演示.接口大部分和2.0没什么区别,脚本稍微有了点变化而已. 扩展GLSurfaceView package com.example.gles300; im ...
- OpenGL ES 2.0 混合
混合技术 混合技术就是将俩个片元调和,主要用于将通过各项测试准备进入帧缓冲的片元(源片元)与原有片元按照设定的比例加权计算出最终片元的颜色值. OpenGL ES 2.0中是通过设置混合因子来指定两个 ...
随机推荐
- hdu2896
数据水,但是各种wa各种t各种re最后照着别人的改了改发现了毛病 数组做指针传入的时候系统是不知道传入后的数字的长度的如果用memset他就只会讲指针的地方清零 #include<iostrea ...
- 8 个实用的 Linux netcat 命令示例
Netcat 或者叫 nc 是 Linux 下的一个用于调试和检查网络工具包.可用于创建 TCP/IP 连接,最大的用途就是用来处理 TCP/UDP 套接字. 这里我们将通过一些实例来学习 netca ...
- LINUX服务器配置NFS服务,挂载外部存储实现目录共享
安装nfs rpcbind 一.服务端配置 安装 NFS 服务器所需的软件包:nfs 和 rpcbind # yum install nfs-utils # yum install rpcbind( ...
- dede留言板BUG解决
dede留言板刷新后空白BUG解决 DEDE留言板验证码留空或者不正确返回空白页面的解决方法 解决方法如下进入文件/plus/guestbook.php 找到代码ShowMsg("验证码不正 ...
- Canvas -画图
2014-09-30 09:14:57 <!doctype html> <html> <head> <title> </title> < ...
- 使用Azure云存储构建高速 Docker registry
使用Azure云存储构建高速 Docker registry 使用Docker来构建应用程序最常见的操作就是 docker run 或者 docker pull了,但是由于众所周知的原因,在国内想要高 ...
- Spark link集合
Part1. 各种参数的意义及如何配置 Spark官方文档——Spark Configuration(Spark配置) http://www.cnblogs.com/vincent-hv/p/3316 ...
- 『安全科普』HTTP协议讲解及手工模拟发送
学习,熟悉HTTP协议,便于以后进行HTTP重放攻击! 0x 01 HTTP协议 查看HTTP协议 先查看鼠标点击一个链接后,浏览器发出了怎样的HTTP请求. Chrome浏览器下,按F12进入开发者 ...
- 自定义Window进入和退出效果(转)
看了android的源代码和资源文件,终于明白如何去修改设置Dialog和Activity的进入和退出效果了. 设置Dialog首先通过getWindow()方法获取它的窗口, 然后通过getAttr ...
- cf B. Hungry Sequence
http://codeforces.com/contest/327/problem/B 这道题素数打表就行. #include <cstdio> #include <cstring& ...