当前位置: 首页 > news >正文

11.2 OpenGL可编程顶点处理:细分着色器

细分 Tessellation

Tessellation(细分)是计算机图形学中的一种技术,用于在渲染过程中提高模型表面的几何细节。它通过在原始图元(如三角形、四边形或补丁)之间插入新的顶点和边,对图元进行细化分割,从而生成更复杂、更多细节的几何形状。

在现代图形管线中,细分通常由特定的硬件单元——细分着色器(Tessellation Shader)支持。细分过程通常包括以下阶段:

  1. 控制细分级别:应用可以通过 glPatchParameterfv 等函数来指定每个补丁的默认细分级别,决定如何增加额外的顶点。

  2. 细分控制着色器(Tessellation Control Shader/ Hull Shader):该着色器可以动态地为每个补丁生成不同的细分参数,并重新组织补丁的顶点数据输出到下一个阶段。

  3. 插值器(Tessellator):根据细分控制着色器提供的参数,对输入的图元进行细分操作,生成更多的顶点和新的图元。

  4. 细分评估着色器(Tessellation Evaluation Shader/ Domain Shader):针对插值器生成的每个新顶点运行此着色器,计算其最终的位置和其他属性。

通过细分技术,可以在保持较低内存占用的同时,极大地提高模型表面的视觉细节,尤其是在渲染复杂曲面和大规模场景时,效果尤为显著。

设置OpenGL的曲面细分阶段中的某些参数

void glPatchParameterfv( enum pname, constfloat *values );
  • pname: 该参数指定了要设置哪个参数。当前,仅支持的值为 GL_PATCH_DEFAULT_OUTER_LEVEL 和 GL_PATCH_DEFAULT_INNER_LEVEL,它们分别用于定义补丁的默认外层和内层细分级别。
  • values: 指向浮点数数组的指针。这些值的数量和含义取决于所指定的 pname。对于细分级别,它应该是一个包含四个元素(x,y,z,w)的数组,表示细分级别。

在细分语境下,这些参数决定了当补丁被 GPU 的细分硬件阶段细分时,沿着每个边进行多少段或“细分”。

http://www.lryc.cn/news/297503.html

相关文章:

  • 微软正在偷走你的浏览记录,Edge浏览器偷疯了
  • 什么是数据库软删除,什么场景下要用软删除?(go GORM硬删除)
  • 计算机设计大赛 深度学习+python+opencv实现动物识别 - 图像识别
  • 我主编的电子技术实验手册(02)——仪表与电源
  • C语言----内存函数
  • 【力扣】快乐数,哈希集合 + 快慢指针 + 数学
  • c实现顺序表
  • 微软为新闻编辑行业推出 AI 辅助项目,记者参加免费课程
  • openssl3.2 - exp - buffer to BIO
  • Android 13.0 系统framework修改低电量关机值为3%
  • 【EAI 013】BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning
  • 一文讲透ast.literal_eval() eval() json.loads()
  • 微软.NET6开发的C#特性——类、结构体和联合体
  • naiveui 上传图片遇到的坑 Upload
  • 安全之护网(HVV)、红蓝对抗
  • Leetcode 213 打家劫舍 II
  • 【C语言】三子棋游戏实现代码
  • docker常用10条容器操作命令
  • 《MySQL 简易速速上手小册》第2章:数据库设计最佳实践(2024 最新版)
  • 利用YOLOv8 pose estimation 进行 人的 头部等马赛克
  • 【Python 千题 —— 基础篇】查找年龄
  • 前后端通讯:前端调用后端接口的五种方式,优劣势和场景
  • Mysql大表添加字段失败解决方案
  • (52)只出现一次的数字III
  • Linux增删ip
  • 【计算机网络】时延,丢包,吞吐量(分组交换网络
  • 张楠辞任抖音集团CEO;东方甄选将开服饰号;小红书新增“附近”一级入口;华为分红770亿元
  • ES监控方法以及核心指标
  • 无人机应用场景和发展趋势,无人机技术的未来发展趋势分析
  • JavaGuide