栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

[Java] [OpenGL ES 3.2] 镜面反射光照

[Java] [OpenGL ES 3.2] 镜面反射光照

实现原理

通过取光线方向相对于法线的反射向量,将其与相机方向相乘(点乘),用pow取幂就行了

着色器代码

一样的部分就跳过了

vec3 cameradir = normalize(u_cameraposition - v_position);
vec3 reflectdir = normalize(reflect(-lightcolor,v_normal));
float spec = pow(max(dot(cameradir,reflectdir),0.0f),128.0f);

最后效果

那个白色小圆圈就是

不是很亮?那就对了!
毕竟把镜面反射放进去了,如果改为

vec4 ambient = 0.1f * u_lightcolor;
vec4 diffues = diff * u_lightcolor;
vec4 specular = spec * u_lightcolor;
o_color = (ambient + diffues) * v_color + specular;

,那么结果会变成这样

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/706794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号