基于重心坐标的四边形双线性插值
- Meet the AMD FidelityFX SDK
- Super Resolution 1 (FSR 1)
- Super Resolution 2 (FSR 2)
- Super Resolution 3 (FSR 3)
- Breadcrumbs library
- Brixelizer & Brixelizer GI
- Contrast Adaptive Sharpening
- Ambient Occlusion
- Screen Space Reflections
- Denoiser
- Lens
- Blur
- Depth of Field
- Downsampler
- HDR Mapper
- Variable Shading
- Parallel Sort
- Naming guidelines
- Developer testimonials
- Other – TressFX
- Meet all our tools
- Radeon™ GPU Detective
- Radeon™ Raytracing Analyzer
- Radeon™ GPU Profiler
- Radeon™ GPU Analyzer
- Radeon™ Memory Visualizer
- Radeon™ Developer Panel
- Other – Frame Latency Meter
- Other – GPU Reshape
- Other – Compressonator
- Other – OCAT
Engines and APIs
Hybrid RT and samples
Our SDKs and libraries
- Meet all our SDKs
- AMD GPU Services
- Anti-Lag 2 SDK
- Vulkan® Memory Allocator
- Direct3D®12 Memory Allocator
- Dense Geometry Format
- Streaming SDK
- AMD Schola (Unreal NPCs)
- Render Pipeline Shaders
- Brotli-G SDK
- AMD Device Library eXtra
- Advanced Media Framework
- Cauldron framework (FidelityFX)
- GPU Performance API
- Radeon™ ProRender suite
- Radeon™ ProRender SDK
- Radeon™ Rays
- Radeon™ ML
- Radeon™ Image Filtering
- GPUOpen MaterialX Library
Content creation
Blogs and videos
Performance guides
- All performance guides
- AMD RDNA™ Performance Guide
- AMD Ryzen™ Performance Guide
- Unreal Engine Performance Guide
Reference
- Reference documenation
- Manuals
- Presentations
- AMD GPU arch programming documentation
- Radeon™ Vulkan® Drivers version table
Latest news
- Latest news from GPUOpen
- Software release blogs
- AMD FSR 3 at GDC 2024
- AMD FSR 3 at GDC 2024 deck
- Mesh shaders in AMD RDNA 3 Architecture
Events
Research
Getting started with:
- Our software on GPUOpen
- Graphics and AMD hardware
- Our tools
- Our SDKs and libraries
- Our effects
- Content creation
- Optimizing and performance
- Developing Vulkan® applications
- Developing DirectX®12 applications
- Using the FSR 1 Unreal Engine 4 plugin
- Using the FSR 2 Unreal Engine 4/5 plugin
- Using the FSR 3 Unreal Engine 5 plugin
- Mesh Shaders
- AI NPCs in Unreal Engine
- Work Graphs
Site directory
Home » Blogs » Bilinear interpolation on a quadrilateral using Barycentric coordinates
基于重心坐标的四边形双线性插值
Łukasz Izdebski
Łukasz Izdebski, PhD, 是 AMD 游戏工程部的开发技术工程师,专注于游戏引擎渲染功能的优化。他的研究兴趣包括动画、几何建模和微分几何。
- 最初发布于 2025 年 4 月 11 日
在计算机图形学中,我们很少遇到连续数据。我们经常使用数字数据,在几何建模的上下文中,这意味着我们通常使用多边形网格,而不是像 Bézier 曲面片这样的程序化曲面。在专用建模软件中构建数字三维对象最流行的技术是多边形建模。创建阶段的结果是一组多边形(网格),其中网格中的多边形可以与其他多边形共享顶点和边。
虽然用户可以创建各种类型的曲面(例如,非流形),但最常见的曲面是拓扑 2-流形。简而言之,2-流形是拓扑学中的一个数学概念,其中空间在局部上类似于 R2\mathbb{R}^2R2 中的欧几里得平面。本质上,2-流形上的每个点都有一个看起来像平面一部分的邻域。
2-流形网格三角形示例 | 2-流形网格四边形示例
---|---
|
在多边形的顶点上,用户可以存储附加数据(per-vertex attributes),例如顶点法线(用于模拟曲面)、纹理坐标(用于纹理映射)或 RGBA 颜色。
理论上,可以使用所有类型的多边形。然而,在实践中,3D 图形艺术家最常使用三角形和四边形。这些多边形通常在计算机图形 API(例如 Microsoft DirectX® 或 Vulkan®)中被称为拓扑图元。从艺术家的角度来看,四边形更有利,因为它们更容易使用。基于四边形建模的属性包括:
- 易于生成类似网格的曲面。
- 创建一种拓扑,提供易于调整的边流(在添加或删除边循环时)。
- 为细分算法产生可预测的结果。
- 基于四边形的拓扑还为将要动画的模型提供更干净的变形。
这些论点使基于四边形的拓扑成为艺术家在建模 3D 对象时的首选。
很久以前,GPU 放弃了对硬件加速四边形(或由 4 个以上顶点组成的多边形)光栅化的支持,因此也放弃了对其顶点中包含的顶点属性的插值(线条渲染是另一回事)。唯一具有硬件加速光栅化实现和参数插值的多边形是三角形。三角形赢得比赛是有充分理由的,我只说几个:
- 三角剖分定理: 该定理指出,三角形网格甚至可以近似复杂的曲面。
- 三角形顶点始终位于同一平面上: 这是因为任何三个非共线点始终会在三维空间中定义一个平面。
- 重心坐标: 此坐标系用于几何学中,以表示三角形内点的位置。这些坐标可用于在三角形表面上插值顶点属性。
- 电路的复杂性较低: 仅支持三角形的光栅化和插值需要更少的晶体管,这意味着此功能占用芯片上的空间更少。这可能会导致更小(且生产成本更低)的芯片,或者节省的空间可用于其他功能。
三角形是实时计算机图形学的基础,这反映在图形 API 支持的原始拓扑中。网格中使用的所有其他多边形类型都必须转换为三角形。当建模应用程序允许构建四边形网格时,此网格的可视化不是基于四边形。相反,应用程序将它们转换为三角形网格。这种必要的转换可能会在四边形表面上的插值顶点属性(例如纹理坐标、顶点法线向量和顶点颜色)中引入 C1C^1C1 不连续性。
对于本文涵盖的主题,C1C^1C1 不连续性是指分段函数连续但其一阶导数不连续的点。换句话说,分段函数本身没有跳跃或中断,但分段函数的斜率(或变化率)有跳跃或中断。
C1C^1C1 连续性 | C1C^1C1 不连续性
---|---
分段函数 | |
一阶导数 |
|
对于将四边形光栅化为两个三角形,顶点属性插值中的 C1C^1C1 不连续性在将四边形分割成两个三角形的新创建的边上最为明显。
顶点颜色 | 纹理坐标 | 顶点法线
---|---|---
|
| [![](https://gpuopen.com/learn/bilinear-interpolation-quadrilateral-barycentric-coordinates</docs_images/bilinear_interpolation_on_a_quadrilateral_using_barycentric_coordinates/bilinear_interpolation_on_a_quadrilateral_using_barycentric_coordinates-html-_downloads-0290aed55724f46beb0047c2f18bc97c-5.