欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

OpenGL通过原图自动生成法线贴图

发布时间:2025/3/15 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 OpenGL通过原图自动生成法线贴图 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

这种生成法线贴图的效果并不是很好,最新的思路是使用基于cGANs的方法来生成法线贴图。
glsl比较简单的算法,思想有点类似于人工智能中的梯度下降,步骤为:

  • 将像素看作向量,计算出模长,代表为像素的高度
  • 获取梯度,是一个vec2
  • 加上一个向量z,将方向朝上
  • #iChannel0"file://./car.png"// 计算高度 float getVal(vec2 uv) {return length(texture(iChannel0,uv).xyz); } // 计算梯度 vec2 getGrad(vec2 uv,float delta) {// 下降幅度和方向vec2 d=vec2(delta,0);return vec2(getVal(uv+d.xy)-getVal(uv-d.xy),getVal(uv+d.yx)-getVal(uv-d.yx))/delta; }void mainImage( out vec4 fragColor, in vec2 fragCoord) {vec2 uv = fragCoord.xy / iResolution.xy;vec3 n = vec3(getGrad(uv, 1.0/iResolution.y), 150.0);// 归一化n=normalize(n);fragColor=vec4(n,1); }

    原图如下:

    效果图如下:

    总结

    以上是生活随笔为你收集整理的OpenGL通过原图自动生成法线贴图的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。