- 彩阳的CSDN博客
- 侯思松博客
- mg博客
- handyTOOL的简书OpenGL ES文集
- 梁老师的博客园
- 老顾谈几何(sciencenet)
- 老顾谈几何(腾讯网)
- Morgan McGuire
- Matt Oztalay
- What exactly is a softlock?
- https://learnopengl.com/
- A Trip through the Graphics Pipeline
- Advanced Graphics Programming Techniques
- GPU渲染管线之旅(GPU渲染管线中的硬件实现)
- 实时渲染管线:(三)逻辑管线
- Life of a triangle - NVIDIA’s logical pipeline
- OpenGL – 屏幕成像和渲染原理解析
- 图形学:名词解释
- 计算机图形学里面所说的 片元 是什么(片元 就是 片段,即:fragment)
- 片段与像素的区别
- 完美的视图旋转算法
- OpenGL缓冲区对象之UBO
- Opengl入门系列- FBO的渲染到纹理的用法
- 计算机图形学七:纹理映射(Texture Mapping)及Mipmap技术
- Texture Gathers and Coordinate Precision
- What is a ‘texture unit’?
- 非常详细易懂的法线贴图(Normal Mapping)
- 3D 建模中的法线贴图解释
- 凹凸映射(Bump Map)实现原理
- Shadow Map Antialiasing
- 各向异性(anisotropic)浅提
- Shader Anisotropic 各项异性
- OpenGL.Shader:9-学习光照-法线贴图(计算TBN矩阵)
- 游戏画面设置中的“各向异性过滤”是做什么的?
- 图像处理基础(三)各向异性滤波
- OpenGL调试技巧汇总
- 4.4抗锯齿概论
- FBO中多重采样抗锯齿(MSAA:MultiSampling Anti-Aliasing)
- Multisampling primer(这里简单介绍了 Sample Locations。)
- OpenGL ES3使用MSAA(多重采样抗锯齿)的方法
- DirectX 12小技巧-启用MSAA
- SimpleMSAA_PC12
- OpenGL Multisampling(其中包含了关于 Coverage 的介绍,以及
gl_SampleMaskIn
和 ARB_sample_shading 的介绍。) - Vulkan spec 28.4. Multisampling(这里详细介绍了 Vulkan 中关于 MSAA 的 Sample Locations。)
- Vulkan spec 29.4. Sample Mask Test(这里介绍了 VkPipelineMultisampleStateCreateInfo 中的
pSampleMask
的相关操作以及与 coverage mask 的关联操作。) - Vulkan MSAA (Multisample anti-aliasing)
- Vulkan MSAA
- D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS enumeration(介绍了 Direct3D 11 中关于 MSAA 的 Sample Locations。)
- 游戏引擎随笔 0x15:现代图形 API 的 MSAA
- WebGL2系列之多采样渲染缓冲对象
- Another New Anti-Aliasing Mode: Enhanced Quality AA
- 主流抗锯齿方案详解(三)FXAA
- 抗锯齿taa和fxaa区别?
- What is the Morphological Anti-Aliasing (MLAA)
- SMAA: Subpixel Morphological Antialiasing
- 上一帧的深度投影到当前帧:
sample2D( depth_buffer_last, (pixel_coordinates * inverse(MPV_current) * MPV_last).xy )
如果是shadowmap,就用那个light space projection matrix。scatter的问题 bilateral filter 搞下。
- 双边滤波 - Bilateral Filter
- Tone Mapping
- 图形 4.1 Bloom算法 游戏中的辉光效果实现
- An investigation of fast real-time GPU-based image blur algorithms
- 【论文复现】The Power of Box Filters
- 高品质后处理:十种图像模糊算法的总结与实现
- 自适应对比度增强(ACE)算法原理及实现
- 颜色空间——Gamma与线性颜色空间
- 一文理解 YUV
- PVR/PVRTC解压源码
- png转换成pvz源代码
- Optimizing Triangles for a Full-screen Pass(内含 GPU Quads 这一概念)
- 移动平台游戏的性能优化
- Performance Tunning for Tile-Based Architecture Tile-Based架构下的性能调校
- 移动端下PLS(Pixel Local Storage)减少带宽开销的原理
- [译]Bandwidth Efficient Graphics with ARM Mali GPUs
- 数字图像处理 傅里叶变换
- 轻量级隐写分析模型
- Shader resource view (SRV) and Unordered Access view (UAV)
- D3D渲染技术之纹理
- Transforms (Direct3D 9)
- The Direct3D Transformation Pipeline
- Direct3D Views
Direct3D 12 resources in HLSL are bound to virtual registers within logical register spaces:
- t – for shader resource views (SRV)
- s – for samplers
- u – for unordered access views (UAV)
- b – for constant buffer views (CBV)
在Direct3D的颜色表示中,_SNORM 后缀表示带符号的规格化的整数;它在一个资源中表示为一个带符号的整型数据,且在shader中被解释为一个带符号的范围在[-1, 1]的浮点值。对于以2的补码形式的整数来说,最大值为1.0f(一个5位的二进制数01111映射为1.0f),最小值是-1.0f(一个5位二进制数10000映射为-1.0f)。此外,第二小的数也被映射为-1.0f(一个5位的二进制数10001被映射为-1.0f)。整数结果的表示被均匀地分布在(-1.0 … 0.0f) 浮点值范围内,且相对的其补集表示的数在 (0.0f … 1.0f) 范围内。_UNORM 后缀表示无符号规格化整数;它在一个资源中被解释为一个无符号整数,且在shader中被解释为一个无符号的规格化的浮点数,范围在[0, 1]内。所有0被映射为0.0f,而所有的1被映射为1.0f。一个均匀分布的浮点值序列被表示为从0.0f到1.0f。例如,一个2比特的UNORM(00, 01, 10, 11)分别表示为:0.0f,1/3,2/3及1.0f。详情可参考:Format Modifiers
OpenGL/Vulkan 中的颜色格式与 Direct3D 类似,可参考:Image Format。其中陈述了:
Normalized integer formats themselves are broken down into 2 kinds: unsigned normalized and signed normalized. Unsigned normalized integers store floating-point values on the range [0, 1], while signed normalized integers store values on the range [-1, 1].
在Vulkan中,SSCALED 后缀表示带符号的整数;它在主机端的资源中表示一个带符号的整数,且在shader中被解释为一个与主机端的值相对应的带符号的浮点数。USCALED 后缀表示无符号的整数;它在主机端的资源中表示一个无符号的整数,且在shader中被解释为一个与主机端的值相对应的无符号的浮点数。详情可见:VK_FORMAT_R8G8B8A8_[U/S]SCALED vs VK_FORMAT_A8B8G8R8_[U/S]SCALED_PACK32 ?
- Direct3D 10 起所使用的颜色格式:DXGI_FORMAT enumeration
- 老旧的 Direct3D 9 所使用的颜色格式:D3DFORMAT
- Windows DDI 所支持的颜色格式:D3DDDIFORMAT enumeration
- Vulkan 支持的颜色格式:VkFormat
- OpenGL 颜色格式可参考:Image Format 以及 Image formats
- Small float formats – R11G11B10F precision(R11G11B10F 颜色格式中,R 和 G 均具有
5
位指数位和6
位尾数位;B 具有5
位指数位和5
位尾数位) - 【GAD翻译馆】小浮点格式——R11G11B10F精度(是对上篇博文的翻译)
- Tutorial 12 : OpenGL Extensions
- How to choose specific GPU when create OpenGL context
- GLSL Programming/GLUT/Transparency(这篇文章是关于颜色混合半透明效果讲解得比较透彻的。这里需要注意的是,由于 iOS 中的图形流水线机制是将从片段着色器输出的像素颜色值,在送到颜色混合固定功能单元之前就已经预先乘了 alpha 值。这种情况下需要使用
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)
来做颜色混合。) - opengl es2 premultiplied vs straight alpha + blending
- Order-Independent Transparency
- vulkan_顺序无关的半透明混合(OIT)
- OpenGL ES 2.0+ 如何设置点的大小
- PointSize(3) Manual Page
- Point Sprites (Direct3D 9)
- Point Sprites
- Chapter 7. Sprites and Text
- OpenGL Interpolation Qualifiers (GLSL)
- DX10/11/12、OpenGL4.0、Vulkan开启Flat shading着色模式
- Interpolation Modifiers Introduced in Shader Model 4
- GLSL: Center or Centroid? (Or When Shaders Attack!)(其中介绍了使用
centroid
模式不会产生 extrapolation,而只会使用 interpolation;但center
模式则可能会引发 extrapolation) - extrapolation and interpolation
- 现代GPU硬件光栅化算法是怎样的
- GPU图形微架构学习笔记(二)光栅化
- Rasterization Rules (Direct3D 9)
- Rasterization Rules
- Rasterization: a Practical Implementation
- OpenGL 学习笔记之 VBO VAO EBO 概念和使用方法总结
- OpenGL ES之uniform和varying
- gluLookAt
- GluLookAt code
- D3D RHW的理解
- 从零开始的Vulkan
- 一起学Vulkan图形开发
- Render graphs and Vulkan — a deep dive
- Vulkan Window System Integration (WSI)
- Use
Direct-to-Display
Demo - OpenGL 坐标系统详解
- OpenGL(四)坐标系
- Vulkan坐标系(NDC——Normalized Device Coordinates,标准化设备坐标)
- Vulkan 右手坐标系见解
- Coordinate Systems (Direct3D 9)
- 游戏引擎随笔 0x13:现代图形 API 的 Bindless
- Managing bindless descriptors in Vulkan
- Vulkan Dynamic State
- 理解Vulkan渲染通道(RenderPass)
- How to use a vulkan sampler with unnormalized texture-coordinates?
- Vulkan查询支持哪些图像形式的VkFormat——vkGetPhysicalDeviceFormatProperties
- Vulkan查询支持哪些纹理采样格式的VkFormat——vkGetPhysicalDeviceImageFormatProperties
- Vulkan中的同步与缓存控制
- Vulkan 同步机制 Fence Semaphore
- 理解Vulkan同步(Synchronization)
- [译]Vulkan教程(23)暂存buffer
- How to use Vulkan Timestamp Queries.
- 从Vulkan API看Shader的数据绑定机制
- Vulkan Mobile Best Practices - Management of Command Buffers and Multi-Threaded Recording
- Vulkan推荐用法(三星设备)
- vulkan_延迟渲染
- 从零开始的Vulkan(附一):多Subpass实现延迟渲染
- A simple Vulkan Compute example
- [vulkan] compute shader
- User defined WorkGroup sizes in Vulkan Compute shaders
- Compute Shaders in D3D12
- 使用计算着色器(Compute Shader)模拟粒子效果【OpenGL】
- OpenGL ES3.1使用计算着色器(Compute Shader)
- 同步连续的OpenGL Compute Shader调用
- Direct3D 11 Geometry Shader Stage
- 几何着色器(Geometry Shader)的基础介绍以及简单示例
- OpenGL Geometry Shader
- Would love to see optional Geometry Shaders
- 几何着色器
- 【OpenGL】笔记二十七、几何着色器
- OpenGL之几何着色器(Geometry Shader)详解
- Geometry Blending (Direct3D 9)
- Vertex Blending under DirectX 7 for the GeForce 256
- Core Language (GLSL)
- GLSL #include
- 浅谈OpenGL之DSA
- OpenGL保存当前状态:glPushAttrib function
- OpenGL三维纹理坐标
- OpenGL版本低于4.5的glBindTextureUnit的替代品?
- OpenGL之——多纹理,混合纹理设置渲染
- glTexEnv
- Texture Combiners
- Chapter 8. Advanced Lighting and Texturing
- Mathematics of glTexGen
- Issue with RGBA32F texture format and mipmapping using OpenGL ES 3.0
- Render to half float texture
- Read texture data(OpenGL使用:
glGetTexImage
) - 利用GLU工具库对任意原始图像数据进行缩放:gluScaleImage function
- Learning DirectX 12 – Lesson 4 – Textures
- DirectXTK12/RenderTexture – This provides a helper class for managing an offscreen render target.
- Data Type (GLSL)(其中包含了结构体类型
struct
) - GLSL中,结构体必须至少含有一个成员声明。成员声明符可以包含精度限定符,但不能使用其他限定符,否则会导致编译时错误。GLSL中的结构体不支持位域(bit fields)。成员的类型必须是已经定义过的(不允许存在不完整类型)。如果成员声明包含了一个初始化器,那么会产生编译时错误。如果成员是一个数组,那么它必须具有一个指定的非零大小,且用于指定该大小的表达式必须是一个 整数常量表达式(Constant Expressions)。
- Interface Block (GLSL)
- Atomic Counter
- OpenGL 4.2 Atomic Counter Demo: Rendering Order of Fragments
- OpenGL GLSL atomic counter in Vulkan
- Vertex Rendering
- Vertex Texture Fetch(VTF)
- Primitive
- Shader Basics - Fragment Shader
- Direct3D 11 – Configuring Depth-Stencil Functionality
- 深度测试(Depth Test)概念
- Issue with reading depth buffer after depth render pass
- How updating a depth buffer works in GPU?
- Early Fragment Test(HLSL中使用:earlydepthstencil)
- Rectangle Texture
- Buffer Texture
- samplerBuffer example needed
- OpenGL Image Load Store Wiki
- Image Format
- OpenGL 图像的加载和存储
- OpenGL-Atomic Operations on Images(一)
- OpenGL图像(image)
- difference between glTextureBarrier() and glMemoryBarrier(GL_TEXTURE_FETCH_BARRIER_BIT)
- Khronos OpenGL官方文档中关于描述的
gbufferImage
类型,实际所对应的类型为:imageBuffer
、iimageBuffer
和uimageBuffer
。该类型对应于Vulkan中具有VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
usage的VkBuffer
。同时在使用此buffer时需要结合VkBufferView
一起使用。 - Trouble with imageStore() (OpenGL 4.3) (In desktop OpenGL, it is perfectly legal to upload floating-point data to a normalized integer texture; OpenGL is expected to convert the data as best it can. ES doesn’t do conversions, so it has to change the internal format (the third parameter) to match the data.)
- Can’t access fbo attached texture in GLSL compute shader with gimage2D
- Framebuffer Object
- Framebuffer Fetch in Vulkan(包含了对
subpassLoad
的使用) - Using SPIR-V in practice with SPIRV-Cross(包含关于 Subpass Input Attachments 的介绍)
- Vulkan input attachments and sub passes
- Input Attachments - reading random location? Read/Write in same pass?
- Precise Qualifier in GLSL and NVIDIA GeForce Cards
- How exactly is GLSL’s “coherent” memory qualifier interpreted by GPU drivers for multi-pass rendering?
- GLSL: about coherent qualifier(内含
atomicAdd
的使用) - Primitive Restart and OpenGL Interoperability
- OpenGL ES 3.0: 图元重启(Primitive restart)
- OpenGL 图元重启
- Direct3D 12 Conservative Rasterization
- DirectX-Specs – Conservative Rasterization
- Variable-rate shading (VRS)
- VRS (Variable-rate shading) 技术介绍&移动端接入现状调研
- Fragment Shading Rate
- Sample Mask Overview refers to
D3D12_GRAPHICS_PIPELINE_STATE_DESC::SampleMask
- 29.4. Sample Mask Test
- gl_SampleMask(HLSL
SV_Coverage
) - Direct3D 11.3 Functional Specification – 16.5 Pull Model Attribute Evaluation
- EvaluateAttributeSnapped function
- EvaluateAttributeSnapped function
- Target Independent Rasterization
- GL_EXT_raster_multisample
- VK_EXT_multisampled_render_to_single_sampled
- DirectX-Specs D3D12 Depth Bounds Test
- Vulkan 29.8. Depth Bounds Test
- GL_EXT_depth_bounds_test
- Direct3D 12 – Memory Aliasing and Data Inheritance
- Vulkan – 12.8. Memory Aliasing
- Direct3D 11 Tiled resources
- Volume tiled resources (Direct3D 12)
- DirectX-Specs – Sampler Feedback
- Vulkan 1.3 – 33. Sparse Resources
- Vulkan Spec – Sparse Resources
- Vulkan Guide – Sparse Resources
- RWBuffer vs RWStructuredBuffer or RWByteAddressBuffer
- D3D12 WriteBufferImmediate Hardware Spec
- shaders: semantics of “
discard
” - OpenGL Dual Source Blending
- OpenGL ES MRT多目标渲染
- HOW TO RENDER TO A TEXTURE ARRAY IN UNITY
- 使用Warp/Wave与LDS优化Wavefront管线
- 游戏引擎随笔 0x28:现代图形 API 的 Wave Intrinsics、Subgroup 以及 SIMD-group
- 2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源
- android framebuffer和HAL以及显示系统
- Android下Opengl ES实现单屏幕双眼显示
- Bit blit
- 使用
glProvokingVertex
修改哪个顶点作为当前图元的 provoking vertex - GLAPI/glProvokingVertex
- Face Culling
- Vertex Post-Processing
- Clipping FAQ
- Clipping (OpenGL)
- DirectX-Specs – Queries
- Direct3D 12 Queries
- Direct3D 12 predication and queries sample
- Chapter 6. Hardware Occlusion Queries Made Useful
- D3D10/11中的遮挡查询的使用
- 初探FOV
- 摄像头参数介绍 — 视场角(FOV)
- Advanced API Performance: Shaders
- 延迟着色法(对 G-buffer 有详细介绍)
- Unity上怎么在移动端使用Render pass实现高性能的延迟着色?
- 延迟着色和Forward+在移动端各有什么利弊?
- Deferred shading(含有对 G-buffer 的引用)
- Deferred shading on mobile: An API overview
- Vulkan Multipass Mobile Deferred Done Right(包含了对
subpassLoad
的使用) - Vulkano Tutorial Multi-pass Rendering(包含了对
subpassLoad
的使用) - [主程必看]移动设备GPU架构知识汇总!
- [游戏中的图形学实时渲染技术] Part1 实时阴影技术
- 一种软阴影的实现方法
- 软阴影的实现尝试
- Unity——Screenspace Shadow Map与传统Shadow Map
- (官方转载)UE5 虚拟阴影贴图 (VirtualShadowMaps)的优势和局限性
- 阴影贴图Variance Shadow Map
- 自定义SRP(六)—— 阴影遮罩(Shadow Mask)
- PCSS(Percentage Closer Soft Shadows)
- 【Unity Shader】自定义阴影ShadowMap(CSM)
- Unity Unlit
- 3D渲染光照模型总结7:SH 球谐光照
- 球谐的基本理解
- Unity Shader学习:体积光(Volumetric Light)
- 3DGS综述《A Survey on 3D Gaussian Splatting》
- What Is Ambient Occlusion? (SSAO, HBAO, HDAO And VXAO)
- Ground-Truth Ambient Occlusion
- GTAO原理&UE4移动端GTAO实现分析
- 实时渲染器开发(四) GTAO原理与实践
- 实时全局光照(屏幕空间):SSAO,HBAO,SSDO,SSR
- Adaptive Screen Space Ambient Occlusion
- 高质量泛光(bloom)从理论到实战
- 3D可视化流程-基础烘焙篇
- UE4-灯光烘培-游戏灯光技术流程
- UE–Derived Data Caches (DDCs)
- What are the key differences between Open Shader Language and GLSL
- Arm Frame Buffer Compression (AFBC)
- 虚幻五渲染编程(Graphic篇)【第十六卷:Sparse Volume Texture 上】
- 【UE】风格化场景全流程学习记录 Part1.地形(对RVT和材质的理解)
- 计算机视觉的计算几何及Python实现
- polygon-mesh-in-computer-graphics
A mesh is a collection of vertices, edges, and faces that define a 3D object’s shape and geometry, it’s used to represent 3D objects in computer graphics programs; it provides a way to define the object’s surface in terms of vertices, edges, and faces.
var geometry = new THREE.BoxGeometry(1, 1, 1),
var material = new THREE.MeshBasicMaterial({color: 0x00ff00}),
var cube = new THREE.Mesh(geometry, material),
scene.add(cube)
- Computer Graphics Surfaces
- obj文件格式
- 流形 & 非流形 释义
- 【翻译】哪些是流形,哪些不是流形
- Shapr3D 是否能创建流形几何?非流形几何?
- 经过数十年的长期搜索,发现了超乎想象的曲面(这里提到了“亏格”【genus】)
- 16.4 三角形扇形(Fans)、条形(Strips)和网格(
连接到一个顶点的边的数目称为顶点的价(valence)
) - Boundary Edge
- Geodesic Distance(测地距离)
- 网格边的种类
- 15.2 渲染轮廓
- 3D Gaussian Splatting简明教程
- 3维重建之神经渲染-3DGS
- 计算机图形学-AABB碰撞检测算法
- GPU中稀疏八叉树的构建求交与实时PathTracing的一种可能方向
- Picking with custom Ray-OBB function
- 一步一步实现基于GPU的pathtracer(一):基础
- 一步一步实现基于GPU的pathtracer(二):求交算法
- 一步一步实现基于GPU的pathtracer(三):path tracing 简述
- Path Tracing
- 对pathtracing的一些个人理解
- 什么是路径追踪?
- 光线追踪—层次包围盒( Bounding Volume Hierarchies )
- 图解光线追踪进阶(二)BVH(The Next Week)
- BVH层级包围体原理及实现
- 一张图搞定SDF的概念
- 2D平面基本图形SDF推导01
- Generating signed distance fields on the GPU with ray maps
- 更快更清晰!NVIDIA首次实现SDF实时渲染,速度提升3个数量级
- 如果想在GPU里软件方式计算射线和场景加速求交,SDF和BVH哪个好,各有什么优缺点?
- A Generalized Ray Formulation For Wave-Optics Rendering
- Falcor和Kajiya的render graph对比
- Unity3D–渲染管线(其中介绍了 URP 和 HDRP)
- UE4 Real-time Hair Advances
- UE5 Lumen原理介绍
- UE5渲染管线–Lumen全局光照
- UE5 Lumen实时全局光照系统简单分析
- UE5 Nanite原理介绍
- UE5渲染技术简介:Nanite篇
- 虚幻引擎神经网络引擎(NNE)
- HLOD(Hierarchical Level of Detail)
- 动画电影LookDev流程科普
- Introducing Learned Motion Matching
- Learned Motion Matching
- Reflection Probe
- 图形引擎实战:HDRP移动版高清渲染管线改造
- 1.HDRP入门
- NVIDIA Gaming Technology
- How to Successfully Integrate NVIDIA DLSS 3
- 英伟达 DLSS 4 官方技术讲解视频
- NVIDIA DLSS Overview & Game Integrations
- FSR、DLSS谁更靠谱?RX 7900 XT VS. RTX 4080对比测试
- AMD高保真超分算法1.0解密(内含 RCAS 锐化)
- 画质提升显著!AMD FSR2.0技术解析和游戏实测
- AMD FSR 3 Now Available
- AMD FidelityFX™ Super Resolution 3 (FSR 3)(支持和推荐的显卡硬件)
- AMD FSR 3.1 Announced at GDC 2024, FSR 3 Available and Upcoming in 40 Games
- 虚幻引擎5 开启FSR的过程和踩坑
- AMD FidelityFX™ Single Pass Downsampler (SPD)
- Welcome to the AMD FidelityFX™ SDK 1.1.2
- What’s new in the AMD FidelityFX™ SDK 1.1.2?
- 我们在 GitHub 上为全球的游戏开发者创建了 AMD FSR 3 源代码库!
- 详细剖析 AMD FSR 算法
- DirectSR Preview Available Now
- Introducing Snapdragon Game Super Resolution
- 高通推出骁龙GSR技术:手机游戏性能翻倍 画面直奔4K
- Introducing Arm Accuracy Super Resolution
- MetalFX
- 游戏插帧技术大揭秘:从DLSS到AFME,AI如何变革游戏体验?
- 时间超分辨率(TSR)是什么
- GDC | 在移动端实现144帧渲染:《暗区突围》手游中的帧预测
- DirectX Innovation on Display at GDC 2024
- SPH 3D流体模拟及其卡通化渲染
- UE5模拟交互篇|可交互流体风场实现
- OpenGL HDR
- Phong 光照模型(镜面反射)
- Mipmapping with Bidirectional Techniques
- BRDF Importance Sampling for Polygonal Lights
- 动态漫反射全局光照(Dynamic Diffuse Global Illumination)
- Nested Dielectrics
- 这是我们要的未来 英伟达RTX光线追踪技术解析
- NVIDIA Vulkan Ray Tracing Tutorial
- Ray Tracing In Vulkan(Vulkan中的光线追踪)
- DirectX Raytracing(DXR) functional Spec阅读笔记+注解
- RTX Direct Illumination (RTXDI)
- Deep Rendering
- 张心欣破Nanite招数于此
- CG技术的转折点,算法TD的觉醒路
- 计算机图形学(CG技术)在日本动画制作中的应用
- 虚幻引擎5.0文档
- UE4/UE5的RHI(Vulkan为例)
- 剖析虚幻渲染体系(09)- 材质体系
- 剖析虚幻渲染体系(10)- RHI
- 剖析虚幻渲染体系(11)- RDG
- 剖析虚幻渲染体系(12)- 移动端专题Part 1(UE移动端渲染分析)
- 剖析虚幻渲染体系(12)- 移动端专题Part 2(GPU架构和机制)
- 剖析虚幻渲染体系(12)- 移动端专题Part 3(渲染优化)
- 剖析虚幻渲染体系(13)- RHI补充篇:现代图形API之奥义与指南
- GPU-Motunui
- OpenSubDiv
- 开源库】OpenVDB获得过奥斯卡奖的开源 C++ 库加入ASWF(VDB即:Volumetric Database)
- Arnold Documentation
- [Arnold] Standins and the ASS file cache
- Arnold(C4DToA)阿诺德渲染教程(111):Arnold体系架构、设计理念、指导思想、技术内幕等 来自Solid Angle开发团队 最新的文献指南
- Maya Release GPU memory for unused textures
- maya文件路径变量环境变量
- 数字图像处理查找表LUT的介绍
- OLED demura技术学习part1
- OLED demura技术学习part2
- AMOLED の 画质神器【Demura】
- 线性蒙皮分解(SSDR)
- Vellum Cloth shelf tool
- VELLUM CLOTH: TIPS & TRICKS
- nCloth
- Understanding and Creating nCloth Simulations in Maya
- MARVELOUS DESIGNER —— 更好、更快、更简单地制作3D服装!
- clo3d —— 虚拟服装 改变世界
- Easing functions
- 游戏基础知识——游戏中HUD与图标设计的规律
- 【卡通渲染】《原神》利用SDF图的面部阴影效果
- 趁热度来做个捏脸
- 探究二次元开放世界的后启示录美学 |《鸣潮》专访
- 【星铁】 截帧浅析
- ヴァルキリーエリュシオンのグラフィックス表現とコストとパフォーマンスの工夫【UNREAL FEST WEST ’22】
- アイドルマスター スターリットシーズン」におけるグラフィックス実装事例と最適化事例【UNREAL FEST EXTREME '22 SUMMER】
- 『Hi-Fi RUSH』開発事例 グラフィックスと最適化紹介【UNREAL FEST 2023 TOKYO】
- Reality World 开源技术分享会
- three-mesh-bvh
- 3D Gaussian Splatting国内落地,元象3D拍摄与混编插件免费开放
- NVIDIA® GVDB Voxels
- 英伟达Earth-2撕开了国内数字孪生的遮羞布
- Rivermax图像传输
- MoonRay(MoonRay is DreamWorks’ open-source, award-winning, state-of-the-art production MCRT renderer)
- SIGGRAPH 2016: Talks
- SIGGRAPH 2024: Advances In Real-Time Rendering In Games
Geometry Image Relevant Repositories
- MeshLab
- PyMesh
- CGAL
- Surface-Parameterization-Algorithms
- Geometry Processing – Parameterization
- TPGIM1.0
- spherical-conformal-map
- rectangular-conformal-map
- disk-conformal-map
- ConformalGeometry
- Computational Conformal Geometry 2020 Summer School
- Xianfeng David Gu
- Riemann Surface - Software
- Riemann Mapping Tutorial with C++ Source
- RiemannMapper : A Mesh Parameterization Toolkit
- Discrete conformal equivalence of polyhedral surfaces
- xatlas
- Rectangular Multi-Chart Geometry Images
- Multi-chart geometry images
invariant 限定符
invariant
可以作用于顶点着色器输出的任何一个 out
或 varying
变量。
当着色器被编译时,编译器会对其进行优化,这种优化操作可能引起指令重排序(instruction reordering),指令重排序可能引起的结果是当两个着色器进行相同的计算时无法保证得到相同的结果。
例如,在两个顶点着色器中,变量 gl_Position
使用相同的表达式赋值,并且当着色程序运行时,在表达式中传入相等的变量值,则两个着色器中 gl_Position
的值无法保证相等,这是因为两个着色器是分别单独编译的。这将会引起 multi-pass 算法的几何不一致问题。
通常情况下,不同着色器之间的这种值的差异是允许存在的。如果要避免这种差异,则可以将变量声明为 invariant
,可以单独指定某个变量或进行全局设置。
使用 invariant
限定符可以使输出的变量保持不变。invariant
限定符可以作用于之前已声明的变量使其具有不变性,也可以在声明变量时直接作为声明的一部分,可参考以下两段示例代码:
varying mediump vec3 Color;
// 使已存在的 color 变量不可变
invariant Color;
或
invariant varying mediump vec3 Color;
以上是仅有的使用 invariant
限定符情境。如果在声明时使用 invariant
限定符,则必须保证其放在存储限定符(varying
或 out
)之前。
只有以下变量可以声明为 invariant
:
- 由顶点着色器输出的内置的特殊变量
- 由顶点着色器输出的
out
或varying
变量 - 向片段着色器输入的内置的特殊变量
- 向片段着色器输入的
in
或varying
变量 - 由片段着色器输出的内置的特殊变量
Direct3D extrapolation
The number of sample locations is dependent on the multisample mode. Vertex attributes are interpolated at pixel centers, since this is where the pixel shader is invoked (this becomes extrapolation if the center is not covered). Attributes can be flagged in the pixel shader to be centroid sampled, which causes non-covered pixels to interpolate the attribute at intersection of the pixel’s area and the primitive. A pixel shader runs for each 2x2 pixel area to support derivative calculations (which use x and y deltas). This means that shader invocations occur more than is shown to fill out the minimum 2x2 quanta (which is independent of multisampling). The shader result is written out for each covered sample that passes the per-sample depth-stencil test.
When a sample-frequency interpolation mode is not needed on an attribute, pixel-frequency interpolation-modes such as linear evaluate at the pixel center. However with sample count > 1 on the RenderTarget, attributes could be interpolated at the pixel center even though the center of the pixel may not be covered by the primitive, in which case interpolation becomes “extrapolation”. This “extrapolation” can be undesirable in some cases, so short of going to sample-frequency interpolation, a compromise is the centroid interpolation mode.
Centroid behaves exactly as follows:
- (1) If all samples in the primitive are covered, the attribute is evaluated at the pixel center (even if the sample pattern does not happen to have a sample location there).
- (2) Else the attribute is evaluated at the first covered sample, in increasing order of sample index, where sample coverage is after ANDing the coverage with the SampleMask Rasterizer State.
- (3) If no samples are covered, such as on helper pixels executed off the bounds of a primitive to fill out 2x2 pixel stamps, the attribute is evaluated as follows: If the SampleMask Rasterizer state is a subset of the samples in the pixel, then the first sample covered by the SampleMask Rasterizer State is the evaluation point. Otherwise (full SampleMask), the pixel center is the evaluation point.
OpenGL中对各种四元向量数据类型的分量标识
- 顶点坐标:x, y, z, w
- 纹理坐标:s, t, r, q
- 颜色通道:r, g, b, a
Vertex Splitting
Vertex splitting is a technique used in computer graphics to handle texture seams. If a single vertex location on a mesh needs two different texture coordinates, then that vertex location gets split into two vertices to send to the GPU - both with the same position, but one with texture coordinate A and one with texture coordinate B. – What does ‘vertex splitting’ mean?
In graph theory, vertex splitting is also a problem where the objective is to determine a minimum number of vertices to split so that the resulting directed acyclic graph (DAG) has no path of length d2. – Vertex Splitting In Dags And Applications To Partial Scan Designs And Lossy Circuits
PS2模拟器相关技术
Switch模拟器
Xbox 360 模拟器
以下为各个图形API的图形流水线
我们可以看到,OpenGL与OpenGL ES基本是一样的。此外,如果想了解OpenGL图形渲染流水线更为细节的情况,可参考此文:https://www.khronos.org/opengl/wiki/Rendering_Pipeline_Overview
以下为 Direct3D 11 Graphics Pipeline:
以下为 Direct3D 12 Graphic Pipeline:
以下为 Compute Pipeline:
Pixel与Texel
pixel 这个单词来源于pix与element的缩写,表示图像元素,因此简称像素。
同样,texel 则是texture与element的缩写,表示纹理元素。