[map-sdk]同步地图3.2.0修改 1.增加聚焦自车周边车辆 2.车道中心线数据平滑处理
This commit is contained in:
@@ -31,6 +31,7 @@ uniform bool isLightWave;
|
||||
in vec4 posInLight;
|
||||
in vec4 _color;
|
||||
in highp vec3 posInEye;
|
||||
in vec3 worldPos;
|
||||
in vec2 _uv;
|
||||
in float signalLineTexY;
|
||||
uniform float waveVel;
|
||||
@@ -47,6 +48,15 @@ uniform float fogStart;
|
||||
uniform float fogEnd;
|
||||
uniform float fogDensity;
|
||||
uniform bool isGuideLine; //引导线
|
||||
uniform vec3[4] streetLightWorldPos;
|
||||
uniform int streetLightCnt;
|
||||
|
||||
uniform bool isBlurEnable;
|
||||
uniform vec3 blurColor;
|
||||
uniform float blurStart;
|
||||
uniform float blurEnd;
|
||||
uniform float blurDensity;
|
||||
uniform float zoom;
|
||||
void setSpotLightColor(){ //聚光灯光照效果
|
||||
lowp float r_base= 4.0;
|
||||
lowp float r_max = spotRadius * 32.0;
|
||||
@@ -63,6 +73,24 @@ void setSpotLightColor(){ //聚光灯光照效果
|
||||
fragColor = c_light;
|
||||
}
|
||||
}
|
||||
float isInStreetLightArea(){
|
||||
for(int i=0;i<streetLightCnt;i++){
|
||||
float l = length(streetLightWorldPos[i]-worldPos);
|
||||
if(l<3.0)
|
||||
return l;
|
||||
}
|
||||
return 5.0;
|
||||
}
|
||||
void setStreetLight(float l){
|
||||
// fragColor = vec4(1.0,0.0,0.0,1.0);
|
||||
// float radius = 3.0;
|
||||
// float l = length(streetLightWorldPos[i]-worldPos);
|
||||
// float fac = 1.0 - l / radius;
|
||||
// fac = pow(fac, 2.0)*0.15;
|
||||
float fac = (1.0 - smoothstep(0.0,3.0,l))*0.15;
|
||||
vec4 c_light = vec4(fac,fac,fac,0.0);
|
||||
fragColor = fragColor + c_light;
|
||||
}
|
||||
bool isInScreen(vec4 p){ //是否在包围盒[(0,0)-(1,1)]内
|
||||
if(p.x < 0.0 || p.x > 1.0 || p.y < 0.0 || p.y > 1.0)
|
||||
return false;
|
||||
@@ -149,9 +177,21 @@ void setGuideLine(){
|
||||
// if(fragColor.a>0.1)
|
||||
// fragColor.a = clamp(1.0/guideLineTexY,0.0,1.0);
|
||||
}
|
||||
void setBlur()
|
||||
{
|
||||
if(!isBlurEnable)
|
||||
return;
|
||||
float distanceFromOrigin = length(worldPos-vec3(0.0,0.0,0.0));
|
||||
if(distanceFromOrigin<(blurStart*zoom))
|
||||
return;
|
||||
float blurAlpha= 1.0-exp(-(distanceFromOrigin/50.0));
|
||||
// float blurAlpha = smoothstep(distanceFromOrigin,blurStart*zoom,blurEnd*zoom);
|
||||
// float blurAlpha = (distanceFromOrigin - (blurStart*zoom)) / ((blurEnd*zoom) - (blurStart*zoom));
|
||||
blurAlpha=clamp(blurAlpha,0.0,1.0)*blurDensity;
|
||||
fragColor.rgb = mix(fragColor.rgb,blurColor,blurAlpha);
|
||||
}
|
||||
void main()
|
||||
{
|
||||
|
||||
if (isRenderZebra)
|
||||
setZebra();
|
||||
else if (isRenderSignalLine)
|
||||
@@ -166,11 +206,6 @@ void main()
|
||||
setTex();
|
||||
else
|
||||
setColor();
|
||||
if (isSpotLight)
|
||||
setSpotLightColor();
|
||||
fragColor*=colorFac;
|
||||
if (isShadow)
|
||||
setShadow();
|
||||
if (isWater){
|
||||
fragColor = waterColor*dot(normalize(fragColor.rgb), vec3(0.0, 0.0, 1.0));
|
||||
fragColor.a = 1.0;
|
||||
@@ -179,5 +214,16 @@ void main()
|
||||
if(_uv.y>0.9)
|
||||
fragColor.a = 0.0;
|
||||
}
|
||||
fragColor*=colorFac;
|
||||
if (isSpotLight)
|
||||
setSpotLightColor();
|
||||
float streetLightDis = isInStreetLightArea();
|
||||
if(streetLightDis<3.0){
|
||||
setStreetLight(streetLightDis);
|
||||
}else{
|
||||
if (isShadow)
|
||||
setShadow();
|
||||
}
|
||||
setLinearFog();
|
||||
setBlur();
|
||||
}
|
||||
@@ -21,7 +21,15 @@ uniform vec3 fogColor;
|
||||
uniform float fogStart;
|
||||
uniform float fogEnd;
|
||||
uniform float fogDensity;
|
||||
|
||||
uniform bool isBlurEnable;
|
||||
uniform vec3 blurColor;
|
||||
uniform float blurStart;
|
||||
uniform float blurEnd;
|
||||
uniform float blurDensity;
|
||||
uniform vec3 cameraPos;
|
||||
uniform float zoom;
|
||||
uniform bool isIce;
|
||||
in vec3 posInEye;
|
||||
layout(location = 0) out vec4 fragColor;
|
||||
//锚点变色逻辑,高爽写得代码,逻辑没变,复制到这
|
||||
@@ -65,6 +73,19 @@ void setLinearFog()
|
||||
fogAlpha=clamp(fogAlpha,0.0,1.0)*fogDensity;
|
||||
fragColor.rgb = mix(fragColor.rgb,fogColor,fogAlpha);
|
||||
}
|
||||
void setBlur()
|
||||
{
|
||||
if(!isBlurEnable)
|
||||
return;
|
||||
float distanceFromOrigin = length(posInEye-vec3(0.0,0.0,0.0));
|
||||
if(distanceFromOrigin<(blurStart*zoom))
|
||||
return;
|
||||
float blurAlpha= 1.0-exp(-(distanceFromOrigin/50.0));
|
||||
// float blurAlpha = smoothstep(distanceFromOrigin,blurStart*zoom,blurEnd*zoom);
|
||||
// float blurAlpha = (distanceFromOrigin - (blurStart*zoom)) / ((blurEnd*zoom) - (blurStart*zoom));
|
||||
blurAlpha=clamp(blurAlpha,0.0,1.0)*blurDensity;
|
||||
fragColor.rgb = mix(fragColor.rgb,blurColor,blurAlpha);
|
||||
}
|
||||
void main()
|
||||
{
|
||||
//点光源光照Blinn-Phong模型
|
||||
@@ -80,6 +101,9 @@ void main()
|
||||
oriColor = changeColorMethod(texture(texId,fragTexCoord) * colorFac);
|
||||
fragColor = oriColor * (ambientColor + diffuseColor * diffuse) + specularColor * specular; //融合这几种颜色
|
||||
fragColor+=oriColor*vec4(0.3)*max(dot(vec3(0,0,1),N),0.0); //罗欢说模型屁股那太黑,给屁股那增加点颜色
|
||||
if(isIce)
|
||||
fragColor+=vec4(.0,.0,0.2,0.0);
|
||||
fragColor.a = oriColor.a;
|
||||
setLinearFog();
|
||||
setBlur();
|
||||
}
|
||||
@@ -33,6 +33,7 @@ layout(location = 3) in vec2 uv;
|
||||
out vec4 posInLight; //从光源位置看此片元的proj坐标
|
||||
out vec4 _color;
|
||||
out vec3 posInEye; //片元的view坐标
|
||||
out vec3 worldPos; //片元的view坐标
|
||||
out vec2 _uv;
|
||||
out float signalLineTexY;
|
||||
out float waveOff;
|
||||
@@ -94,6 +95,7 @@ void setGuideLine(){
|
||||
}
|
||||
void main()
|
||||
{
|
||||
worldPos = (modelMat * pos).xyz;
|
||||
setPosInEye();
|
||||
if(isRenderDivider){
|
||||
vec4 pos0 = projMat*viewMat*modelMat * vec4(dividerPos0,1.0);
|
||||
|
||||
Reference in New Issue
Block a user