Dust3D开源项目分析——渲染与材质部分 | 顶点数据结构

 2021SC@SDUSC

shaderVertex.h定义了用于渲染的顶点(Vertex)数据结构,本文将分析一个ShaderVertex拥有的属性。

#ifndef DUST3D_SHADER_VERTEX_H
#define DUST3D_SHADER_VERTEX_H
#include <QOpenGLFunctions>

#pragma pack(push)
#pragma pack(1)
typedef struct
{
    GLfloat posX;
    GLfloat posY;
    GLfloat posZ;
    GLfloat normX;
    GLfloat normY;
    GLfloat normZ;
    GLfloat colorR;
    GLfloat colorG;
    GLfloat colorB;
    GLfloat texU;
    GLfloat texV;
    GLfloat metalness;
    GLfloat roughness;
    GLfloat tangentX;
    GLfloat tangentY;
    GLfloat tangentZ;
    GLfloat alpha = 1.0;
} ShaderVertex;
#pragma pack(pop)

#endif

posX,posY,posZ是顶点的坐标,是定点最基本的、不可缺少的属性,其他的属性是可选的。normX,normY,normZ是顶点法线(N)。顶点法线的朝向一般决定了面片的正反方向,如果shader采用Backface Culling的话,从法线反向就看不到这个面片了。colorR/G/B是顶点颜色。具体渲染时,fragmentShader负责根据顶点颜色插值计算中间像素的颜色。texU和texV是UV坐标,与材质纹理的位置有关。metalness是金属度参数,负责控制金属反射程度(0为没有反射,1为全反射)。roughness负责控制材质的粗糙程度,或者说高光或反射的模糊程度。tangentX,tangentY,tangentZ是顶点的切线(T)。切线的方向与UV空间的U方向保持一致。在实际渲染中,Normal Map是定义在切线空间的,该空间的三条坐标轴分别是切线T,法线N和副切线B=T×N,这样定义可以避免Normal Map因为物体移动,坐标变化而导致视觉效果产生变化。alpha值表示顶点的透明度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值