使用基于GPU的Geometry Clipmap渲染地形(下)

使用基于GPU的Geometry Clipmap渲染地形(上) 使用基于GPU的Geometry Clipmap渲染地形(Terrain Rendering Using GPU-Based Geometry Clipmaps)(上) 翻译:claymanclayman_joe@yahoo.com.cn仅供个人学习使用,勿用于任何商业用途,转载请注明作者^_^ 注:这篇文章翻译的是《GPU Gem2》中第二章的内容,老早就翻译的东西了,但因为翻的 阅读详情

使用基于GPU的Geometry Clipmap渲染地形(Terrain Rendering Using GPU-Based Geometry Clipmaps)(下)

 

翻译:clayman
clayman_joe@yahoo.com.cn
仅供个人学习使用,勿用于任何商业用途,转载请注明作者^_^

1.3.5 Vertex Shader

         我们使用同一个vertex shader来渲染之前描述的所有2D footprint。首先,对于给定的footprint坐标(x,y)来说,shader通过简单的缩放和变换来计算它的世界坐标(x,y)。接下来,从顶点纹理中读取高度值z。这里不需要任何过滤器,因为顶点和纹理采样是一一对应的。

         为了平滑的过渡,vertex shader将对两个不同层次边界的顶点进行几何混合(blend)。根据顶点(x,y)相对于观察点(Vx,Vy)的位置来计算混合参数alpha。这里:

alpha = max( alphax,alphay):

alphax = clamp(( | x – Vx ) – ( (n-1)/2 – w – 1)) /w , 0, 1)

         使用类似的方法计算alphay。

         这里,所有的坐标都以clipmap网格范围内[ 0….n-1]之间的值来表示,w是交换区域的宽度(这里选择了 w= n/10)。我们希望除了交换区域外,alpha值都为0,而在交换区域内,值线形的从0增加到1,当达到外围的层次时值为1。下图的蓝色部分即为交换区域。

         对于几何混合来说,我们对同一位置(x,y)在不同层次之间的高度值Zf(较好层次的高度值)和Zc(教粗糙层次的高度值)之间进行线形插值。

Z’ = ( 1 – alpha)Zf + alpha * Zc

         一般情况下,采样点位于较粗糙网格的边缘,Zc则通过对较粗糙层次边缘两个采样点的均值来计算。我们可以在运行时来完成这一步计算,但这将会导致3次顶点纹理查找(Zf一次,Zc = (Zc1 + Zc2)/2 两次),而对于现在的显卡来说,读取顶点纹理的代价还是很大的。

         因此,我们把计算Zc作为更新clipmap的一部分来实现,把Zf和Zc打包为同一个单通道的浮点纹理(pack both Zf and Zc into the same 1-channel floation-point texture)。我们把Zf作为浮点数的整数部分,而差值Zd = Zc – Zf则保存为小数部分。这个打包的步骤将在pixar shader中upsampling的时候完成(详见 1.4.1 )。

         以下是实现clipmap渲染的vertex shader的部分HLSL代码:

struct OUTPUT

{

         vector pos           : POSITON;

         float2 uv              : TEXCOORD0; //coordinates for normal-map lookup

Terrain 算法整理。基本常识。 Terrain 算法整理。基本常识。 制作地形的方法大致分为 Voxel, Height map, Mesh 这几种,会根据使用的技术有各自的长短处,常识上的长短处如下。Unity 用的是高度图,所以说明下这个方式。 高度图地形的构成大概有4种,内存管理系统最重要也很难。 (1) 用高度图贴图制作的Mesh ( CPU -> 变成 GPU ) (2) Splitting 画出的贴图 (... 阅读详情

相关推荐

LOD(多级细节)技术全解析:从游戏引擎到大厂实践

当LOD突然切换时,模型会产生瞬间跳变,肉眼可见的"闪烁"或"突变",这在业内称为Popping(弹出感)。真实感不等于"处处最高精度",而是"恰到好处地欺骗人眼"从离散到连续(几个档位 → 无限级细分)从手动到自动(美术精细制作 → 算法自动生成)从单一维度到全维度(几何面数 → 几何+着色+动画+物理+AI全面LOD化)从局部优化到系统级调度(单个物体LOD → 结合流式加载、裁剪算法的全局资源管理)性能优化的本质,往往不是把每件事做得更快,而是搞清楚什么时候可以"少做一点"而不被察觉。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 57

地形算法clipmap

地形算法,基于GPU的地形渲染算法。支持大规模地形渲染,效率高,结构简单

clipMap的demo文件

clipMap的demo文件:实现OpenLayer自定义区域显示、通过map的precompose,postcompose事件调用canvas的clip方法实现区域外的地图遮罩;图层遮罩参看layer图层的prerender,postrender事件。

中国30米逐年植被净初级生产力(NPP)数据集(1982年至今CASA模型)

1.3 气温、降水、地表太阳辐射数据 气温和降水数据月度空间插值数据是基于全国2400多个站点的日观测数据,在计算各气象要素月值的基础上,基于Anusplin软件插值生成的1982年以来各月度30米分辨率气温和降水栅格数据,插值过程中引入高程作为协变量。气温单位为℃,降水单位为mm。1.2 土地覆盖数据 土地覆盖数据来源于1985 年-2020年全球30米精细地表覆盖动态监测产品,该数据集包含29个地表覆盖类型,进行拼接、裁剪、重分类和重采样处理,获得8期250米分辨率的植被类型数据。

地球资源数据云的官方博客 2839

Matplotlib图片尺寸调整全攻略:从figsize到savefig的实战技巧

在数据可视化与科学计算中,图形尺寸控制是影响图表可读性与专业度的基础环节。其核心原理在于协调逻辑尺寸(英寸)与物理输出(像素)的映射关系,这直接决定了信息呈现的清晰度与布局合理性。从技术价值看,精准的尺寸控制能提升图表在不同媒介(如学术论文、报告、网页)中的适配性,避免显示不全、模糊失真等常见问题。在应用场景上,无论是Jupyter Notebook中的交互探索、自动化报告的批量生成,还是满足严格出版要求的插图制作,都需要掌握对应的尺寸调整策略。本文聚焦于matplotlib中的figsize参数、rcPa

weixin_30899023的博客 328

BUCK降压电路设计实战:从理论到PCB的完整指南

本文详细介绍了BUCK降压电路的设计实战,从基础原理到PCB布局的完整指南。通过关键部件选型、PCB布局黄金法则和调试技巧,帮助工程师高效设计稳定可靠的开关电源。特别针对电感、MOSFET和电容选型提供实用公式和避坑指南,并分享高温环境下的工程经验与测试方法。

weixin_33744141的博客 450

欧姆龙PLC EIP通讯配置方法

欧姆龙EIP通讯配置方法

weixin_59671695的博客 6136

YOLOv8模型INT8量化实战:解决sigmoid输出归零的坑(附代码修改)

本文详细介绍了YOLOv8模型INT8量化过程中遇到的sigmoid输出归零问题及其解决方案。通过修改模型导出代码、优化ONNX量化流程,并提供完整的部署优化技巧,帮助开发者在边缘计算设备上实现高效的模型推理。文章还包含量化效果验证和常见问题排查方法,助力开发者快速解决实际部署中的难题。

vvv99的博客 252

FPGA实战:手把手教你配置4个Aurora 8B/10B IP核共享时钟(附完整工程文件)

本文详细介绍了在Xilinx FPGA上配置四个Aurora 8B/10B IP核并实现时钟共享的实战指南。从工程规划、IP核基础配置到共享逻辑的实现,再到多核时钟域与复位架构的设计,以及时序约束与调试技巧,提供了完整的解决方案和可复用的工程文件。特别强调了GT参考时钟的共享和复位信号的处理,帮助工程师高效解决多通道高速串行通信的设计挑战。

weixin_30879169的博客 411

uni-app - 最详细 H5 网页接入微信登录功能,提供公众号配置与详细注释示例代码(移动端网页实现点击登录按钮后 调用微信公众号授权登录功能 详细讲解接入流程与详细示例代码)官方最新超级详细教程

uniapp中H5微信登录,uniapp H5微信授权登录,微信公众号第三方网页(H5)授权登录(OAuth2.0)流程及逻辑详细教程,UNIAPP 开发H5 怎么实现微信公众号登录功能,uniapp如何实现H5网页的公众号微信登录,怎么做uniapp微信登录,uniapp h5项目怎么实现微信登录的功能,uniapp微信浏览器H5授权微信登录,UniApp开发H5接入微信登录的全过程,uniapp的H5页面使用微信登录,uniapp H5微信授权登录,H5之微信授权登陆 (uniapp网页版微信授权登录)

🏆 前端领域优质创作者 7407

JavaScript - Blob / File / base64 使用场景介绍与相互转换

前言 本文首先介绍一下这三种对象使用场景,最后介绍下它们之间互转格式的解决方案。 您前端一旦涉及到文件或图片上传到服务器, 就势必离不了Blob/File/base64三种主流的类型。 Blob MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob 您可以观察到,像一些图片处理插件(例如有名的vue-cropper)图片裁剪插件, 它们将图片处理完毕后,都将使用blob对象返回处理好的图片,供开发者用于上传服务器。

🏆 前端领域优质创作者 4493

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 使用基于GPU的Geometry Clipmap渲染地形(上)
下一篇: 我要开始写游戏啦~~~~
soilwork
博客等级 码龄23年 290粉丝 116原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值