123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- import defaultValue from "../Core/defaultValue.js";
- import defined from "../Core/defined.js";
- import FeatureDetection from "../Core/FeatureDetection.js";
- import VertexFormat from "../Core/VertexFormat.js";
- import PolylineMaterialAppearanceVS from "../Shaders/Appearances/PolylineMaterialAppearanceVS.js";
- import PolylineCommon from "../Shaders/PolylineCommon.js";
- import PolylineFS from "../Shaders/PolylineFS.js";
- import Appearance from "./Appearance.js";
- import Material from "./Material.js";
- var defaultVertexShaderSource =
- PolylineCommon + "\n" + PolylineMaterialAppearanceVS;
- var defaultFragmentShaderSource = PolylineFS;
- if (!FeatureDetection.isInternetExplorer()) {
- defaultVertexShaderSource =
- "#define CLIP_POLYLINE \n" + defaultVertexShaderSource;
- }
- function PolylineMaterialAppearance(options) {
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
- var translucent = defaultValue(options.translucent, true);
- var closed = false;
- var vertexFormat = PolylineMaterialAppearance.VERTEX_FORMAT;
-
- this.material = defined(options.material)
- ? options.material
- : Material.fromType(Material.ColorType);
-
- this.translucent = translucent;
- this._vertexShaderSource = defaultValue(
- options.vertexShaderSource,
- defaultVertexShaderSource
- );
- this._fragmentShaderSource = defaultValue(
- options.fragmentShaderSource,
- defaultFragmentShaderSource
- );
- this._renderState = Appearance.getDefaultRenderState(
- translucent,
- closed,
- options.renderState
- );
- this._closed = closed;
-
- this._vertexFormat = vertexFormat;
- }
- Object.defineProperties(PolylineMaterialAppearance.prototype, {
-
- vertexShaderSource: {
- get: function () {
- var vs = this._vertexShaderSource;
- if (
- this.material.shaderSource.search(
- /varying\s+float\s+v_polylineAngle;/g
- ) !== -1
- ) {
- vs = "#define POLYLINE_DASH\n" + vs;
- }
- return vs;
- },
- },
-
- fragmentShaderSource: {
- get: function () {
- return this._fragmentShaderSource;
- },
- },
-
- renderState: {
- get: function () {
- return this._renderState;
- },
- },
-
- closed: {
- get: function () {
- return this._closed;
- },
- },
-
- vertexFormat: {
- get: function () {
- return this._vertexFormat;
- },
- },
- });
- PolylineMaterialAppearance.VERTEX_FORMAT = VertexFormat.POSITION_AND_ST;
- PolylineMaterialAppearance.prototype.getFragmentShaderSource =
- Appearance.prototype.getFragmentShaderSource;
- PolylineMaterialAppearance.prototype.isTranslucent =
- Appearance.prototype.isTranslucent;
- PolylineMaterialAppearance.prototype.getRenderState =
- Appearance.prototype.getRenderState;
- export default PolylineMaterialAppearance;
|