图形学初识--颜色混合

文章目录

  • 前言
  • 正文
    • 为什么要有颜色混合?
    • 颜色混合常见实现方式?
    • 上述颜色混合注意点
  • 结尾:喜欢的小伙伴点点关注+赞哦!

前言

本章节补充一下颜色混合的内容,主要包含:为什么要有颜色混合?颜色混合常实现方式?

正文

为什么要有颜色混合?

当需要渲染透明或半透明物体时,需要引入颜色混合,同时它也是颜色RGBA的alpha的体现!

在这里插入图片描述

颜色混合常见实现方式?

每个像素的颜色由RGBA构成,其中第四分量我们通常叫做alpha,也叫做透明度,一般取值范围 [ 0 , 1 ] [0,1] [0,1]​ 。

接下来举个最简单的颜色混合表达形式:

已知屏幕中 ( x , y ) (x,y) (x,y) 位置处的像素颜色RGB分量为 d s t C o l o r ⃗ \vec {dstColor} dstColor ,它的透明度为 d s t A l p h a dstAlpha dstAlpha ,当我们需要在此位置渲染的像素颜色为 s r c C o l o r ⃗ \vec {srcColor} srcColor ,透明度为 s r c A l p h a srcAlpha srcAlpha ,则通过一下公式计算出最终颜色:
b l e n d C o l o r = s r c A l p h a ∗ s r c C o l o r ⃗ + ( 1 − s r c A l p h a ) ∗ d s t C o l o r ⃗ blendColor = srcAlpha * \vec {srcColor} + (1-srcAlpha) * \vec {dstColor} blendColor=srcAlphasrcColor +1srcAlphadstColor
此时我们用待渲染像素颜色的alpha值直接表明颜色权重,我们简单举个例子:

​ 当绘制不透明物体时, s r c A l p h a = 1 srcAlpha = 1 srcAlpha=1,此时原本屏幕的像素颜色就相当于被忽略了;

​ 当绘制全透明物体时, s r c A l p h a = 0 srcAlpha = 0 srcAlpha=0​,此时相当于没有画此像素;

​ 当绘制透明物体时, s r c A l p h a = ( 0 , 1 ) srcAlpha = (0,1) srcAlpha=0,1,此时相当于将底色和目标色进行线性插值,从而得到一种混合的效果;

当然了,这些公式都可以发散,例如写成如下:
b l e n d C o l o r = ( 1 − s r c A l p h a ) ∗ s r c C o l o r ⃗ + s r c A l p h a ∗ d s t C o l o r ⃗ blendColor = (1 - srcAlpha) * \vec {srcColor} + srcAlpha * \vec {dstColor} blendColor=(1srcAlpha)srcColor +srcAlphadstColor

根据具体的需要决定!

上述颜色混合注意点

上述的实现方式,属于最简单的方式。细心的朋友很容易想到,某个像素的绘制受到底色的制约。也就是说,假如需要绘制透明物体,必须将不透明物体先绘制上去,然后才能达到混合的效果,所以咱们需要注意混合的绘制次序,如下:

  • 先绘制不透明物体,保证底色正确
  • 有远及近绘制半透明物体,保证近距离透明物体不会遮挡远距离透明物体(按摄像机距离排序)

效果图:

在这里插入图片描述

结尾:喜欢的小伙伴点点关注+赞哦!

你们的点赞就是我创作的最大动力!希望对各位小伙伴能够有所帮助哦,永远在学习的道路上伴你而行, 我是航火火,火一般的男人!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/676799.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外星人Alienware x17R1 原厂Windows11系统

装后恢复到您开箱的体验界面,包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统,经厂家手调试最佳状态,性能与功耗直接拉满,体验最原汁原味的系统。 原厂系统下载网址:http://w…

全文检索-ElasticSearch

1.基本概念 1.Index索引 动词:相当于MySQL中的insert; 名词:相当于MySQL中的DataBase; 2.Type(类型) 在Index(索引)中,可以定义一个或多个类型 类似于MySQL中的Tab…

Docker大学生看了都会系列(二、2.1Mac通过Homebrew安装Docker)

系列文章目录 第一章 Docker介绍 第二章 2.1 Mac通过Homebrew安装Docker 第二章 2.2 CentOS安装Docker 文章目录 前言Mac通过Homebrew安装本机环境系统要求terminal命令安装查看安装信息配置阿里云镜像加速登陆阿里云配置加速地址其他国内加速地址 总结 前言 在上一章了解了Do…

步进电机双闭环细分控制(matlab仿真)内含课设等参考文件

1.1 步进电机工作原理 步进电机是一种用电脉冲进行控制,将电脉冲信号转换成相位移的电机,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比,每一个脉冲信号可使步进电机旋转一个固定的角度。脉冲的数量决定了旋转的总角度,脉…

FebHost:什么是国别国外域名以及用途?

在数字时代的浪潮中,互联网如同一张无形的网,将全球的人们紧密相连。尽管世界因此变得“更小”,但在网络上展示个人或企业身份时,标明国家归属或地理位置依然显得格外重要。今天,我们将深入探讨国别域名的重要性、使用…

查看所用数据库的版本

通过查询 SELECT VERSION();

java面试题及答案2024,java2024最新面试题及答案(之二)

四、反射 57. 什么是反射? 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力 Java反射: 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调…

顺序表的讲解与实现

顺序表的讲解与实现 一、顺序表的概念及结构二、顺序表分类顺序表和数组的区别顺序表分类静态顺序表动态顺序表 三、动态顺序表的实现(使用VS2022)1.初始化、销毁、打印内容2.检查扩容3.尾部插入、尾部删除、头部插入、头部删除尾部插入尾部删除头部插入头部删除 4.指定插入、指…

Go语言 几种常见的IO模型用法 和 netpoll与原生GoNet对比

【go基础】16.I/O模型与网络轮询器netpoller_go中的多路io复用模型-CSDN博客 字节开源的netPoll多路复用器源码解析-CSDN博客 一、几种常见的IO模型 1. 阻塞I/O (1) 解释: 用户调用如accept、read等系统调用,向内核发起I/O请求后,应用程序…

装机必备——鲁大师安装教程

装机必备——鲁大师安装教程 软件下载 软件名称:鲁大师 软件语言:简体中文 软件大小:144.75M系统要求:Windows7或更高, 32/64位操作系统 硬件要求:CPU2GHz ,RAM2G或更高 下载通道①迅雷云盘丨…

探究 Meme 的金融与社交属性

原文标题:《A Social and Financial Study of Memecoins》撰文:Andrew Hong编译:Chris,Techub News 每一个市场周期都伴随着 Meme 代币的出现。一群人围绕着某个 Meme 集结起来,暂时抬高了某个资产的价格(从…

YOLOv5白皮书-第Y5周:yolo.py文件解读

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、环境 语言:Python3、Pytorch开发环境电脑系统:Windows 10语言环境:Python 3.9.2编译器:VS Code显卡&#…

LeetCode刷题之HOT100之组合总和

2024/6/3 周一,工作日的第一天。昨晚梦到被导师说去实验室不积极哈哈哈,风扇开到二级,早上被吹醒。买的书马上快要到了。上午刚来准备刷题,结果去搞了一下数据库sql,做的差不多了,还差点格式转换就差不多出…

暴力数据结构之排序大杂烩

1. 冒泡排序:O(N^2) 逻辑解析: 冒泡排序并没有什么实际意义,但是有教学意义,相信大部分小白在学习的初期第一个接触的排序就是冒泡排序。那么接下来我们了解一下他的底层逻辑: 冒泡排序顾名思义就是将最大&#xff08…

力扣 101. 对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool check(struct TreeNode* L,struct TreeNode* R){if(!L&…

匠心独运,B 端系统 UI 演绎华章之美

匠心独运,B 端系统 UI 演绎华章之美

kettle从入门到精通 第六十四课 ETL之kettle kettle中执行SQL脚本步骤,使用需当心

1、群里有不定时会有同学反馈执行SQL脚本步骤使用有问题,那么咱们今天一起来学习下该步骤。trans中的执行SQL脚本有两方面功能,使用时需小心,不然很容易踩坑。 官方定义: 翻译: 您可以使用此步骤执行 SQL 脚本&#…

kafka集群内外网分流方案——筑梦之路

前言 在现代分布式系统架构中,Kafka作为一款高性能的消息队列系统,广泛应用于大数据处理、实时流处理以及微服务间的异步通信场景。特别是往往企业级应用中,业务网段和内网通信网段不是同一个网段,内网的机器想要访问业务数据只能…

考研人注意了:六月份保底进度+复习规划!

六月开始准备考研确实有点晚了,因为大家基本上上都是3月份开始的 开始的比别人晚,学习的时间就会比较紧张,但是不要怕,考研并不是比谁学的时间长,而是比谁学的效果好,就算是六月份开始,只要学习…

三、基于图像分类预训练编码及图神经网络的预测模型 【框图+源码】

背景: 抽时间补充,先挖个坑。 一、模型结构 二、源码