diff --git a/config.js b/config.js
index 4d80fe4734a63b01dcaf4b517bbdcc79882ad42b..39df3e1f0c9a01db5fc0f65c470a5f15c3923550 100644
--- a/config.js
+++ b/config.js
@@ -8,6 +8,7 @@ module.exports = {
     SHARED: "sharedResource.json.gz",
     FEATURES: ".json.gz",
     GEOMETRIES: ".bin.gz",
-    ATTRIBUTES: ".bin.gz"
+    ATTRIBUTES: ".bin.gz",
+    TEXTURES: ".bin.dds.gz"
   }
 };
\ No newline at end of file
diff --git a/src/handler.js b/src/handler.js
index 26edda600edad9c9a7ce12981b03a7fa01e64ea3..25a3b5d7cd1c90da088e8c0f424e265adfdd1d71 100644
--- a/src/handler.js
+++ b/src/handler.js
@@ -5,6 +5,7 @@ const shared = require('./shared');
 const features = require('./features');
 const geometries = require('./geometries');
 const attributes = require('./attributes');
+const textures = require('./textures');
 const layer = require('./layer');
 const layers = require('./layers');
 
@@ -16,6 +17,7 @@ const handlers = {
   features: features,
   geometries: geometries,
   attributes: attributes,
+  textures: textures,
   layer: layer,
   layers: layers
 }
diff --git a/src/textures.js b/src/textures.js
new file mode 100644
index 0000000000000000000000000000000000000000..7293ef25ab8fd4de3a9d776b6f9becd69618e9db
--- /dev/null
+++ b/src/textures.js
@@ -0,0 +1,18 @@
+const config = require('../config');
+const fs = require('fs');
+
+const handle = (req, res) => {
+
+  let baseUrl = req.baseUrl.replace(/^\/?|\/?$/g, "");
+  let resourse = `${config.BASE_DIR}/${baseUrl}/${req.params.nodeid}/${req.params.resource}/${req.params.resourceid}${config.FOLDER_INDEX.TEXTURES}`;
+  if (!fs.existsSync(resourse)) throw new Error("not found");
+
+  res.set({
+    'Content-Type': 'application/octet-stream',
+    'Content-Encoding': 'gzip'
+  });
+  res.sendFile(resourse);
+
+};
+
+module.exports = handle;
\ No newline at end of file