顶点着色器:

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 菲尼尔着色器相关推荐

  1. OpenGL ES的性能范围(OpenGL ES2.0官方文档)

    http://blog.csdn.net/mengtnt/article/details/7773304 OpenGL ES 1.1和OpengGL ES2.0的规范中,都定义了每种实现必须支持的最低 ...

  2. iOS OpenGL ES2.0教程   Lesson03 旋转

    iOS OpenGL ES2.0教程    Lesson03  旋转 注:可供翻译的课程只有前两课.从这节课起,我试着根据我对OpenGL ES的理解写接下去的课程,希望能和大家一起学习. 在上节课中 ...

  3. 初识 OpenGL ES2.0

    原文链接:Android OpenGLES2.0(一)--了解OpenGLES2.0 OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API ...

  4. OpenGL ES2.0 – Iphone开发指引

    原文链接地址:http://www.raywenderlich.com/3664/opengl-es-2-0-for-iphone-tutorial 免责申明(必读!):本博客提供的所有教程的翻译原稿 ...

  5. Learn OpenGL (三):着色器

    GLSL 着色器是使用一种叫GLSL的类C语言写成的.GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性. 着色器的开头总是要声明版本,接着是输入和输出变量.uniform和mai ...

  6. OpenGL从入门到精通--着色器的使用

    着色器 github源码仓库 opengl环境准备 opengl编程从入门到精通-hello,window OpenGL从入门到精通–你好三角形 OpenGL从入门到精通–着色器的使用 着色器(Sha ...

  7. OpenGL ES (三)着色器和程序

    OpenGL ES学习系列文章: 上一篇:OpenGL ES (二)EGL介绍和使用 下一篇:OpenGL ES (二)EGL介绍和使用 着色器和程序 前言 1.创建Shader 2.加载Shader ...

  8. opengl顶点数据传送和着色器处理(vao,vbo)

    OpenGL学习脚印: 顶点数据传送和着色器处理1 写在前面 本节内容翻译和整理自<Learning Modern 3D Graphics Programming>Chapter1内容.作 ...

  9. OpenGL ES3.1使用计算着色器(Compute Shader)

    OpenGL ES3.1使用计算着色器(Compute Shader) 1.基本介绍 OpenGL ES从3.1版本开始支持计算着色器         工作模型有全局工作组和本地工作组,全局工作组包含 ...

最新文章

  1. dbcp 连接池参数说明
  2. SAP IDoc E1EDP04 Z8 数据错误之对策
  3. 算数运算符/空值问题
  4. Web APi之控制器创建过程及原理解析(八)
  5. 云速搭部署挂载CPFS的E-HPC
  6. STL vector的erase操作问题
  7. 控件设置相对位置_惊人的Divi转换控件!
  8. 将单向链表按某值划分成左边小、 中间相等、 右边大的形式~迎娶是挺
  9. Vagrant+PHPStorm+Google+XDebug断点调试
  10. Centos linux php扩展安装步骤
  11. 数字金额转中文大写金额 - 数字大写转换
  12. 联想笔记本windows10,点击蓝牙显示无法连接
  13. Go语言适合做什么?
  14. Word文档中统一字符串八大妙法(转)
  15. c语言编写qq机器人软件,未编译的QQ机器人C语言版
  16. 如何停止keepalived_systemctl无法停掉keepalived
  17. Bugku-web-秋名山老司机
  18. cad延伸快捷键_熟练掌握快捷键,提高CAD绘图效率
  19. Python文件读取
  20. 红米S2解BL锁教程申请BootLoader解锁教程

热门文章

  1. Strategy Analytics:假设禁令持续 华为全球手机出货量将同比下降24%
  2. 关于filter()函数
  3. 推荐一篇相机入门科普
  4. 图文:高春辉和他的网站梦
  5. 海外社媒运营,推特内容营销
  6. turtle绘制图形
  7. 计算机系统精品教程,_《计算机操作系统教程》课程教学课件(精品) 设备管理(88P).pdf...
  8. java 提取文档注释 命令,java文档注释及javadoc命令
  9. 一种基于某嵌入式软件系统测试的方法
  10. RISC-V 麻雀 D1s Buildroot 基本笔录