OpenGL ES2.0 菲尼尔着色器
顶点着色器:
uniform mat4 uMVPMatrix;
uniform mat4 uMMatrix;
uniform vec3 uCamera;
attribute vec3 aPosition;
attribute vec3 aNormal;
varying vec3 eyeVary;
varying vec3 newNormalVary;
void main() { gl_Position = uMVPMatrix * vec4(aPosition,1); vec3 normalTarget=aPosition+aNormal;vec3 newNormal=(uMMatrix*vec4(normalTarget,1)).xyz-(uMMatrix*vec4(aPosition,1)).xyz;newNormal=normalize(newNormal); newNormalVary=newNormal;vec3 eye = normalize(uCamera-(uMMatrix*vec4(aPosition,1)).xyz);eyeVary=eye;
}
片元着色器:
precision mediump float;
uniform samplerCube sTexture;
varying vec3 eyeVary;
varying vec3 newNormalVary;
vec4 zfs( in float zsl
){ vec3 vTextureCoord; vec4 finalColorZS; vec4 finalColorFS; vec4 finalColor; const float maxH=0.7; const float minH=0.2; float sizeH=maxH-minH;float testValue=abs(dot(eyeVary,newNormalVary)); if(testValue>maxH) { vTextureCoord=refract(-eyeVary,newNormalVary,zsl);finalColor=textureCube(sTexture, vTextureCoord); } else if(testValue<=maxH&&testValue>=minH) {vTextureCoord=reflect(-eyeVary,newNormalVary);finalColorFS=textureCube(sTexture, vTextureCoord); vTextureCoord=refract(-eyeVary,newNormalVary,zsl);finalColorZS=textureCube(sTexture, vTextureCoord); float ratio=(testValue-minH)/sizeH; finalColor=finalColorZS*ratio+(1.0-ratio)*finalColorFS; } else { vTextureCoord=reflect(-eyeVary,newNormalVary);finalColor=textureCube(sTexture, vTextureCoord); } return finalColor;
}
void main(){vec4 finalColor=vec4(0.0,0.0,0.0,0.0);finalColor.r=zfs(0.97).r; finalColor.g=zfs(0.955).g; finalColor.b=zfs(0.94).b; gl_FragColor=finalColor;}
OpenGL ES2.0 菲尼尔着色器相关推荐
- OpenGL ES的性能范围(OpenGL ES2.0官方文档)
http://blog.csdn.net/mengtnt/article/details/7773304 OpenGL ES 1.1和OpengGL ES2.0的规范中,都定义了每种实现必须支持的最低 ...
- iOS OpenGL ES2.0教程 Lesson03 旋转
iOS OpenGL ES2.0教程 Lesson03 旋转 注:可供翻译的课程只有前两课.从这节课起,我试着根据我对OpenGL ES的理解写接下去的课程,希望能和大家一起学习. 在上节课中 ...
- 初识 OpenGL ES2.0
原文链接:Android OpenGLES2.0(一)--了解OpenGLES2.0 OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API ...
- OpenGL ES2.0 – Iphone开发指引
原文链接地址:http://www.raywenderlich.com/3664/opengl-es-2-0-for-iphone-tutorial 免责申明(必读!):本博客提供的所有教程的翻译原稿 ...
- Learn OpenGL (三):着色器
GLSL 着色器是使用一种叫GLSL的类C语言写成的.GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性. 着色器的开头总是要声明版本,接着是输入和输出变量.uniform和mai ...
- OpenGL从入门到精通--着色器的使用
着色器 github源码仓库 opengl环境准备 opengl编程从入门到精通-hello,window OpenGL从入门到精通–你好三角形 OpenGL从入门到精通–着色器的使用 着色器(Sha ...
- OpenGL ES (三)着色器和程序
OpenGL ES学习系列文章: 上一篇:OpenGL ES (二)EGL介绍和使用 下一篇:OpenGL ES (二)EGL介绍和使用 着色器和程序 前言 1.创建Shader 2.加载Shader ...
- opengl顶点数据传送和着色器处理(vao,vbo)
OpenGL学习脚印: 顶点数据传送和着色器处理1 写在前面 本节内容翻译和整理自<Learning Modern 3D Graphics Programming>Chapter1内容.作 ...
- OpenGL ES3.1使用计算着色器(Compute Shader)
OpenGL ES3.1使用计算着色器(Compute Shader) 1.基本介绍 OpenGL ES从3.1版本开始支持计算着色器 工作模型有全局工作组和本地工作组,全局工作组包含 ...
最新文章
- dbcp 连接池参数说明
- SAP IDoc E1EDP04 Z8 数据错误之对策
- 算数运算符/空值问题
- Web APi之控制器创建过程及原理解析(八)
- 云速搭部署挂载CPFS的E-HPC
- STL vector的erase操作问题
- 控件设置相对位置_惊人的Divi转换控件!
- 将单向链表按某值划分成左边小、 中间相等、 右边大的形式~迎娶是挺
- Vagrant+PHPStorm+Google+XDebug断点调试
- Centos linux php扩展安装步骤
- 数字金额转中文大写金额 - 数字大写转换
- 联想笔记本windows10,点击蓝牙显示无法连接
- Go语言适合做什么?
- Word文档中统一字符串八大妙法(转)
- c语言编写qq机器人软件,未编译的QQ机器人C语言版
- 如何停止keepalived_systemctl无法停掉keepalived
- Bugku-web-秋名山老司机
- cad延伸快捷键_熟练掌握快捷键,提高CAD绘图效率
- Python文件读取
- 红米S2解BL锁教程申请BootLoader解锁教程
热门文章
- Strategy Analytics:假设禁令持续 华为全球手机出货量将同比下降24%
- 关于filter()函数
- 推荐一篇相机入门科普
- 图文:高春辉和他的网站梦
- 海外社媒运营,推特内容营销
- turtle绘制图形
- 计算机系统精品教程,_《计算机操作系统教程》课程教学课件(精品) 设备管理(88P).pdf...
- java 提取文档注释 命令,java文档注释及javadoc命令
- 一种基于某嵌入式软件系统测试的方法
- RISC-V 麻雀 D1s Buildroot 基本笔录