Drawable Projected Surface
Surface drawable for the 3D camera-frustum projection path of earth.worldwind.shape.ProjectedMediaSurface. Bypasses the surface-skin stage that DrawableSurfaceQuad uses for the homography path: there's no intermediate skin texture and no per-tile rasterise-then-resample, just a per-tile direct render of the source texture against the terrain triangulation with a per-fragment image projection. Trade-off: per-shape, per-tile draw call (no batching like DrawableSurfaceQuad's scratch list does), but correct projection on relief.
Per-tile precision: the shape's imageProjection is in WGS84 ECEF (huge magnitudes); evaluating it against terrain world positions in single-precision float would lose sub-metre precision. Instead, the drawable pre-multiplies it by the tile's vertex-origin translation per tile, producing a tile-local matrix that the shader applies to the float-precise local vertex positions.
Properties
Soft-edge fade margin (UV-space, 0..0.5). 0 (default) is the cheapest path: the shader's uniform-controlled branch skips the fade math entirely so non-fading draws cost nothing extra over a hard cutoff. Non-zero values ramp alpha 0..1 across the inner strip on each side to blend the projection into surrounding terrain.
4x4 matrix mapping a world-ECEF position to image clip space. Composition: bias_to_uv * perspective * lookAt(camera, target, up). Per-fragment, the shader divides xy/w for UV in 0, 1 across the camera's frustum.
Shader to drive: typically Surface3DProjectionShaderProgram for 2D textures or earth.worldwind.render.program.Surface3DProjectionShaderProgramOES for Android OES external textures. The shape picks the right one in makeDrawable based on the resolved source texture's target.
Source-texture coord transform (e.g. the vertical flip image / video textures install).