赞
踩
OpenGL 毛发渲染实现
毛发渲染技术在电影、游戏等领域中有广泛的应用。本文将介绍如何使用 OpenGL 实现一种基于 shell texture 和 fur texture 的毛发渲染方法。
本文使用了两个着色器来实现毛发渲染,分别是 shell 和 fur 着色器。
shell 着色器主要用来绘制毛发表面,其中包括光照、阴影、反射等效果。代码如下:
#version 330 core in vec3 FragPos; in vec3 Normal; in vec2 TexCoords; out vec3 FragPosWorld; out vec3 NormalWorld; out vec2 TexCoordsShell; uniform mat4 model; uniform mat4 view; uniform mat4 projection; void main() { gl_Position = projection * view * model * vec4(FragPos, 1.0f); FragPosWorld = vec3(model * vec4(FragPos, 1.0f)); NormalWorld = mat3(transpose(inverse(model))) * Normal; TexCoordsShell = TexCoords; }
fur 着色器主要用来绘制毛发,在其基础上还需添加噪声和弯曲等效果。代码如下:
#version 330 core
in vec3 FragPosWorld;
in vec3 NormalWorld;
in vec2 TexCoordsShell;
out vec4 FragColor;
uniform sampler2D shellTexture;
// fur texture 储存了每根毛发的坐标、方向和长度等信息
uniform sampler2D fu
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。