-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Transparent billboards/points not working as expected. #2130
Comments
The problem here is that billboards write depth for any fragments with 0 < alpha < 1. The polyline on the left is drawn first, then the billboard so the translucent fragments are properly blended. The polyline on the right is drawn last and fails the depth test where the billboard has fragments with 0 < alpha < 1. This could be fixed with multiple passes. @pjcozzi thoughts? |
@bagnell check Real-Time Rendering starting with Section 10.6. We could render the opaque part in one pass and then the translucent in another (each using a different fragment shader to Also, the render state should depend on billboard alpha (including the translucency based on distance), right now it always write depth. |
The |
I think #3011 fixes the border issue, but I need to test it out on more machines. |
Recently brought up again on the mailing list: https://groups.google.com/d/msg/cesium-dev/LAeE70CWecs/Y_BtC_u4DwAJ |
Could be the problem: http://www.realtimerendering.com/blog/gpus-prefer-premultiplication/ |
Or part of the problem. |
Brought up again in #3550 |
possibly related issue: https://groups.google.com/forum/?hl=en#!topic/cesium-dev/Mlqw0pR8jvg |
Also causes #3782 |
Also reported here: https://groups.google.com/forum/?hl=en#!topic/cesium-dev/gipZ4pITQOs var viewer = new Cesium.Viewer('cesiumContainer');
var entity = viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706),
model : {
uri : '../../SampleData/models/CesiumAir/Cesium_Air.glb',
minimumPixelSize : 128,
maximumScale : 20000
},
label: {
text: 'cesium test name',
scale:1,
font: '15px Verdana',
fillColor : Cesium.Color.BLUE,
horizontalOrigin : Cesium.HorizontalOrigin.RIGHT,
eyeOffset: new Cesium.Cartesian3(0,0,-50)
}
});
viewer.trackedEntity = entity; |
Also reported here: https://groups.google.com/d/msg/cesium-dev/vEJZ8cgoz1A/wtP3-54CBQAJ |
As a temporary fix, would it be possible to merge branch master into billboard-transparency? This way billboard-transparency will be up to date. |
Also reported here: #4720 |
This also happens for points. From #2885: var viewer = new Cesium.Viewer('cesiumContainer');
for (var i=0; i<35000; i++) {
viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-122.431297 +i/10, 37.773972+i/10),
point : {
pixelSize : 10,
color : Cesium.Color.fromRandom({
alpha : 1.0,
minimumRed : 0.5,
minimumGreen : 0.5,
minimumBlue : 0.5
})
}
});
} Forum post: https://groups.google.com/forum/?hl=en#!topic/cesium-dev/5qv7Q_qudt8 |
Also mentioned here: https://groups.google.com/forum/#!topic/cesium-dev/uoxSFmYmhi8 |
Thanks all for the input, @haisapan, @nikakhov, @billwritescode. @bagnell fixed this in #4886, which will be in Cesium 1.30 next Wednesday. Let us know if you run into anything else. |
From the mailing list: https://groups.google.com/d/msg/cesium-dev/_RSvkl1M9d8/fDV7_ZgBBXkJ
Orient the camera so that the billboard is visual in front of both lines, you'll see a screenshot similar to the below. I would expect both lines to behave like the line on the left.
Here's a screenshot
The text was updated successfully, but these errors were encountered: