美文网首页OpenGL学习笔记
【四十三,光照-材质02设置材质】

【四十三,光照-材质02设置材质】

作者: Woodlouse | 来源:发表于2019-12-10 23:08 被阅读0次

设置材质

在上一节中我们了解了不同的材质对光的的变现是不同的,通过定义一个结构来表示材质对光的敏感性。在这一节中我们将定义的材质应用到程序中。

着色器的开发
顶点着色器可以沿用之前的,修改的是片段着色器。

1. 定义材质属性

//材质属性定义
struct Material {
    vec3 ambient;
    vec3 diffuse;
    vec3 specular;
    float shininess;
};
uniform Material material;

2. 应用材质属性

    // Ambient
    vec3 ambient = lightColor * material.ambient;
    
    // Diffuse
    vec3 norm = normalize(Normal);
    vec3 lightDir = normalize(lightPos - FragPos);
    float diff = max(dot(norm, lightDir), 0.0f);
    vec3 diffuse = lightColor * (diff * material.diffuse);
    
    //Specular
    vec3 viewDir = normalize(viewPos - FragPos);
    vec3 reflectDir = reflect(-lightDir, norm);
    float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);
    vec3 speclular = lightColor * (spec * material.specular);
    
    vec3 result = ambient + diffuse + speclular;
    color = vec4(result, 1.0f);

3. 在代码中设置材质属性的值

GLS中的结构体没有什么特别之处,填充结构体时设置结构体中的各个元素的uniform值即可:

    m_pShader->setVec3("material.ambient", 1.0f, 0.5f, 0.31f);
    m_pShader->setVec3("material.diffuse", 1.0f, 0.5f, 0.31f);
    m_pShader->setVec3("material.specular", 0.5f, 0.5f, 0.5f);
    m_pShader->setFloat("material.shininess", 32.0f);

4. 运行效果

应用材质

设置材质代码

相关文章

  • 【四十三,光照-材质02设置材质】

    设置材质 在上一节中我们了解了不同的材质对光的的变现是不同的,通过定义一个结构来表示材质对光的敏感性。在这一节中我...

  • OpenGLES5-光照

    光照基础 环境光照 漫反射光照 镜面光照 光照特性 材质属性 泛射材质 漫反射材质 镜面反射材质 发射材质 光照计...

  • 2020-03-17 修改模型颜色

    场景:客户可以自行修改物体的颜色,材质常见材质包括: 1、基础材质 MeshBasicMaterial : 对光照...

  • SceneKit 材质(Material)

    前言 光照与材质,是决定模型怎么样被渲染的关键参数,不同的设置带来的直观效果不一致,所以熟悉光照与材质,能够快速调...

  • 替换unity自身的mask遮罩

    新建材质球,设置图,新建image,赋值材质球即可

  • Unreal4地形材质0062bate1

    地形材质设置 材质以用于地形地貌。尽管任意 材质 都可用于 地形 Actor,但虚幻引擎4(UE4)中的材质系统同...

  • 材质和光照贴图

    材质(materials) 在真实世界里,每个物体会对光产生不同的反应。钢看起来比陶瓷花瓶更闪闪发光,一个木头箱子...

  • 光照-03.材质

    在真实世界里,每个物体会对光产生不同的反应。钢看起来比陶瓷花瓶更闪闪发光,一个木头箱子不会像钢箱子一样对光产生很强...

  • OpenGL #07 Materials

    物体的材质属性   不同物体的材质会影响光照结果,那么在我们上节学的光照模型中,光照是由三种光照合成的,也就是说材...

  • 【四十四,光照-材质03设置光的属性】

    光属性的定义 在上一节中我们设置了材质属性,为材质对环境光、漫反射光、镜面光照和高光系统的敏感性定义了不同的值,总...

网友评论

    本文标题:【四十三,光照-材质02设置材质】

    本文链接:https://www.haomeiwen.com/subject/lnsngctx.html