图形学初识--颜色混合

文章目录

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

前言

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

正文

为什么要有颜色混合?

当需要渲染透明或半透明物体时,需要引入颜色混合,同时它也是颜色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.mzph.cn/bicheng/21787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos 7 安装刻录至硬件服务器

前言 在日常测试中,会遇到很多安装的场景,今天给大家讲一下centos 7 的安装,希望对大家有所帮助。 一.下载镜像 地址如下: centos官方镜像下载地址https://www.centos.org/download/ 按照需求依次点击下载 二.镜像刻录 镜像刻…

idea springboot woff/woff2/eot/ttf/svg等小图标不显示的问题 - 第515篇

历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…

Shopify 独立站监控观测最佳实践

Shopify 简介 Shopify 是一个全球领先的电子商务平台,它为商家提供了一整套在线商店解决方案。自 2006 年成立以来,Shopify 已经帮助数百万商家在全球范围内建立和发展他们的在线业务。 监控观测 Shopify 站点对于确保业务连续性、优化用户体验和提高运…

Linux shell编程学习笔记56:date命令——显示或设置系统时间与日期

0 前言 2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。在收集的信息中,应该有一条是搜索信息的时间。 1. date命令 的功能、格式和选项说明 我们可以使用命令 date --help 来查看 d…

Kafka之Broker原理

1. 日志数据的存储 1.1 Partition 1. 为了实现横向扩展,把不同的数据存放在不同的 Broker 上,同时降低单台服务器的访问压力,我们把一个Topic 中的数据分隔成多个 Partition 2. 每个 Partition 中的消息是有序的,顺序写入&#x…

LeetCode刷题:反转链表

leetCode真题 206. 反转链表 属于基础简单题目 常见的做法有递归和while循环 递归 // 1. 递归参数和返回值public static ListNode reverseList(ListNode head) {// 1. 递归终止条件if (head null || head.next null) {return head;}// 递归逻辑ListNode last reverseL…

达梦数据库相关SQL及适配Mysql配置总结

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

Windows 系统安装 VisualSVN Server

一.下载 VisualSVN Server VisualSVN-Server 是 SVN 版本控制中服务器端要使用的软件,就是我们提交代码存在安装这个软件的电脑上,它将很多配置和服务直接帮你完成,简单好用容易上手。VisualSVN Server有三个版本,社区版免费但限15个用户,另有一般和‘企业’两个收费版本…

如何卸载ollama

文章目录 一 概述二 卸载2.1 Windows平台卸载 ollama2.2 Linux 平台卸载 ollama2.3 Docker 平台卸载 ollama 参考链接 一 概述 本文档主要讲述 ollama 如何卸载,适用范围包括 Windows Linux 以及 Docker 等平台的安装方式。 二 卸载 2.1 Windows平台卸载 ollama …

学习C++应该做点什么项目

C作为一门底层可操作性很强的语言,广泛应用于游戏开发、工业和追求性能、速度的应用。 比如腾讯,无论游戏,还是微信,整个鹅厂后台几乎都是 C 开发,对 C 开发者的需求非常大。 但问题是C入门和精通都比较困难&#xf…

有哪些挣钱软件一天能赚几十元?盘点十个能长期做下去的挣钱软件

在这个信息爆炸的时代,每个人都在寻找快速赚钱的秘诀。很多人做兼职副业的目标并不是获得很大的成功,大部分人一天能赚几十就心满意足了。 今天,我要带你一探究竟,揭秘那些能让你日赚几十元的挣钱软件。准备好了吗?让我…

单枪匹马月入17万美元:数字游民Pieter Levels如何成就商业传奇

了解数字游民的应该都听说过 Pieter Levels,可以说他是数字游民的先驱人物。 他在推特上拥有超过43万的粉丝,仅凭一台笔记本电脑就连续建立了多个高盈利网站,光是推特主页上展示的比较新的几个网站,每月收入加起来就高达 17.6 万…

Vulnhub项目:THE PLANETS: MERCURY

1、靶场地址 The Planets: Mercury ~ VulnHubThe Planets: Mercury, made by SirFlash. Download & walkthrough links are available.https://vulnhub.com/entry/the-planets-mercury,544/ 这好像是个系列的,关于星球系列,之前还做过一个地球的&a…

STM32-15-DMA

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 STM32-12-OLED模块 STM32-13-MPU STM32-14-FSMC_LCD 文章目录 STM…

[原创][Delphi多线程]TThreadedQueue的经典使用案例.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delph…

解读信创产业根基,操作系统发展历程

信创产业根基之一操作系统 操作系统是一个关键的控制程序,负责协调、管理和控制计算机硬件和软件资源。作为硬件的首要软件扩展,它位于裸机与用户之间,充当了两者之间的桥梁。通过其核心程序,操作系统高效地管理着系统中的各类资源…

有哪些兼职软件一天能赚几十元?盘点十个能长期做下去的挣钱软件

在当今这个信息泛滥的时代,众人纷纷寻求迅速致富的捷径。许多人在从事兼职或副业时,并不期望取得巨大的成就,只要每天能额外收入数十元,便已心满意足。 今天,我将带领大家深入探究,揭开那些隐藏在日常生活…

【小海实习日记】Git使用规范

1.Git使用流程 1.1 从master分支拉一个分支,命名要符合规范且清晰。 1.2 commit到本地,push 到远端。 1.3 在Gitlab创建MR,选择develp分支。 1.4 如果要修改的话,先把Gitlab上的MR修改为Draft(修改态),然后在本地修改代…

9.1.1 简述目标检测领域中的单阶段模型和两阶段模型的性能差异及其原因

9.1目标检测 场景描述 目标检测(Object Detection)任务是计算机视觉中极为重要的基础问题,也是解决实例分割(Instance Segmentation)、场景理解(Scene Understanding)、目标跟踪(Ob…

subline text3安装numpy,scipy,matplotlib,pandas,sklearn,ipynb

1,numpy(基础数值算法) 安装,要是在cmd直接安装到最后会报错, import numpy as np ModuleNotFoundError: No module named numpy 直接进入python环境,输入python -m pip install numpy就不会报错…