osgEarth的Rex引擎原理分析(九十四)rex引擎如何显示瓦片的边界

本文分析了osgEarth的Rex引擎如何在显示时突出瓦片边界,通过在边界处使用特殊颜色来实现。文章基于之前关于晕眩图制作的基础,加入了抗锯齿效果,并列举了一系列待继续分析的引擎相关问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:(八十八)中的问题171

效果图如下:

思路:在文章(osgEarth的Rex引擎原理分析(九十一)晕眩图的制作与实现)的基础上,判断纹理坐标的范围,在边界处用特殊颜色即可。

着色器代码如下:

if(oe_layer_tilec.s<0.01 || oe_layer_tilec.s>0.99 || oe_layer_tilec.t<0.01 || oe_layer_tilec.s>0.99){
		color=vec4(1.0,0.0,0.0,1.0);
	}

加入抗锯齿效果后:

#version $GLSL_VERSION_STR
$GLSL_DEFAULT_PRECISION_FLOAT

#pragma vp_name       REX Engine - Fragment
#pragma vp_entryPoint elevation_last_frag
#pragma vp_location   fragment_coloring
#pragma vp_order      0.9

//tile coordinate
vec4 oe_layer_tilec;
// SDK functions:
float oe_terrain_getElevation();

float linearstep(float edge0, float edge1, float x) {
    float t = (x - edge0)/(edge1 - edge0);
    return clamp(t, 0.0, 1.0);
}

void elevation_last_frag(inout vec4 color)
{	
	vec4 vec4ColorArray[64];
	vec4ColorArray[ 0] = vec4(0.00000, 0.00000,   0.56250,     1.0);
  vec4ColorArray[ 1] = vec4(0.00000, 0.00000,   0.62500,     1.0);
  vec4ColorArray[ 2] = vec4(0.00000, 0.00000,   0.68750,     1.0);
  vec4ColorArray[ 3] = vec4(0.00000, 0.00000,   0.75000,     1.0);
  vec4ColorArray[ 4] = vec4(0.00000, 0.00000,   0.81250,     1.0);
  vec4ColorArray[ 5] = vec4(0.00000, 0.00000,   0.87500,     1.0);
  vec4ColorArray[ 6] = vec4(0.00000, 0.00000,   0.93750,     1.0);
  vec4ColorArray[ 7] = vec4(0.00000, 0.00000,   1.00000,     1.0);
  vec4ColorArray[ 8] = vec4(0.00000, 0.06250,   1.00000,     1.0);
  vec4ColorArray[ 9] = vec4(0.00000, 0.12500,   1.00000,     1.0);
  vec4ColorArray[10] = vec4(0.00000, 0.18750,   1.00000,     1.0);
  vec4ColorArray[11] = vec4(0.00000, 0.25000,   1.00000,     1.0);
  vec4ColorArray[12] = vec4(0.00000, 0.31250,   1.00000,     1.0);
  vec4ColorArray[13] = vec4(0.00000, 0.37500,   1.00000,     1.0);
  vec4ColorArray[14] = vec4(0.00000, 0.43750,   1.00000,     1.0);
  vec4ColorArray[15] = vec4(0.00000, 0.50000,   1.00000,     1.0);
  vec4ColorArray[16] = vec4(0.00000, 0.56250,   1.00000,     1.0);
  vec4ColorArray[17] = vec4(0.00000, 0.62500,   1.00000,     1.0);
  vec4ColorArray[18] = vec4(0.00000, 0.68750,   1.00000,     1.0);
  vec4ColorArray[19] = vec4(0.00000, 0.75000,   1.00000,     1.0);
  vec4ColorArray[20] = vec4(0.00000, 0.81250,   1.00000,     1.0);
  vec4ColorArray[21] = vec4(0.00000, 0.87500,   1.00000,     1.0);
  vec4ColorArray[22] = vec4(0.00000, 0.93750,   1.00000,     1.0);
  vec4ColorArray[23] = vec4(0.00000, 1.00000,   1.00000,     1.0);
  vec4ColorArray[24] = vec4(0.06250, 1.00000,   0.93750,     1.0);
  vec4ColorArray[25] = vec4(0.12500, 1.00000,   0.87500,     1.0);
  vec4ColorArray[26] = vec4(0.18750, 1.00000,   0.81250,     1.0);
  vec4ColorArray[27] = vec4(0.25000, 1.00000,   0.75000,     1.0);
  vec4ColorArray[28] = vec4(0.31250, 1.00000,   0.68750,     1.0);
  vec4ColorArray[29] = vec4(0.37500, 1.00000,   0.62500,     1.0);
  vec4ColorArray[30] = vec4(0.43750, 1.00000,   0.56250,     1.0);
  vec4ColorArray[31] = vec4(0.50000, 1.00000,   0.50000,     1.0);
  vec4ColorArray[32] = vec4(0.56250, 1.00000,   0.43750,     1.0);
  vec4ColorArray[33] = vec4(0.62500, 1.00000,   0.37500,     1.0);
  vec4ColorArray[34] = vec4(0.68750, 1.00000,   0.31250,     1.0);
  vec4ColorArray[35] = vec4(0.75000, 1.00000,   0.25000,     1.0);
  vec4ColorArray[36] = vec4(0.81250, 1.00000,   0.18750,     1.0);
  vec4ColorArray[37] = vec4(0.87500, 1.00000,   0.12500,     1.0);
  vec4ColorArray[38] = vec4(0.93750, 1.00000,   0.06250,     1.0);
  vec4ColorArray[39] = vec4(1.00000, 1.00000,   0.00000,     1.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值