zoukankan      html  css  js  c++  java
  • 什么是Modulate?

    Modulate是颜色操作中的一个术语,可以理解为颜色乘法。两个颜色相乘,或者一个颜色与一个标量相乘。叫做modulation(调制?)。一个渲染中的三角形,其上某个像素的颜色由多个颜色源组合而成。通常来说,其中一个颜色来自纹理,另一个来自三角形顶点的插值,这两者的乘积就是最终的颜色,在这种情况下,我们称纹理的颜色被顶点插值的颜色modulate。

    在纹理混合的时候,有一种混合方式就叫做modulate,也就是将纹理的颜色与顶点的diffuse color相乘。具体代码如下。

    第一行选择color1的来源,这里是纹理。

    第二行选择color2的来源,这里是顶点的diffuse color。

    第三行指定两个颜色的操作,这里是modulate,也就是相乘。

    // Set color source and operation
    g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
    g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
    g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP,   D3DTOP_MODULATE);

    效果图

    一张木质纹理,一个蓝颜色,modulate之后效果如下

    在DirectX中有多种纹理混合的方式,Modulate是其中一种,其他常见的还有:

    • add = one one
    • modulate or filter = zero src_color or dst_color zero
    • modulate2x = dst_color src_color
    • blend = src_alpha one_minus_src_alpha
    • opaque = one zero

    等号右边的两个参数分别对应下面这个混合公式的srcFactor和destFactor。

    Final color = srcColor * srcFactor + destColor * destFact

    DirectX所支持的所有混合类型列表在这里

    From Mathnmatics for 3D Game Programming and Computer Graphics-Third Edition(p158)

    作者:zdd
    出处:http://www.cnblogs.com/graphics/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    haproxy 2.5 发布
    cube.js sql 支持简单说明
    基于graalvm 开发一个cube.js jdbc driver 的思路
    apache kyuubi Frontend 支持mysql 协议
    oceanbase 资源池删除说明
    基于obd 的oceanbase 扩容说明
    jfilter一个方便的spring rest 响应过滤扩展
    cube.js schema 定义多datasource 说明
    typescript 编写自定义定义文件
    meow 辅助开发cli 应用的工具
  • 原文地址:https://www.cnblogs.com/graphics/p/2679376.html
Copyright © 2011-2022 走看看