From 5400e87548e2bbb0c8278a5876ee329a95062542 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 1 Jun 2017 17:15:37 +0200 Subject: [PATCH 01/23] Add setting to enable sanding Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 1a8288e648..96550e9cc5 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5340,6 +5340,14 @@ "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false + }, + "sanding_enabled": + { + "label": "Enable Sanding", + "description": "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface.", + "type": "bool", + "default_value": false, + "settable_per_mesh": true } } }, From 33dccc134039a596482ae077f994a9bffbdd7e5d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 1 Jun 2017 21:57:26 +0200 Subject: [PATCH 02/23] Add sanding pattern setting I should probably remove Lines or Zig Zag as option, since they are basically the same. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 96550e9cc5..5f32fea15a 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5348,6 +5348,21 @@ "type": "bool", "default_value": false, "settable_per_mesh": true + }, + "sanding_pattern": + { + "label": "Sanding Pattern", + "description": "The pattern to use for sanding top surfaces.", + "type": "enum", + "options": + { + "lines": "Lines", + "concentric": "Concentric", + "zigzag": "Zig Zag" + }, + "default_value": "lines", + "enabled": "sanding_enabled", + "settable_per_mesh": true } } }, From a58926263c56b64c02b18ceceb635feb7ea9feb0 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 2 Jun 2017 09:27:05 +0200 Subject: [PATCH 03/23] Add flow rate for sanding Let's see how this works out. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 5f32fea15a..aa6b244ac2 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5363,6 +5363,18 @@ "default_value": "lines", "enabled": "sanding_enabled", "settable_per_mesh": true + }, + "sanding_flow": + { + "label": "Sanding Flow", + "description": "The amount of material, relative to a normal skin line, to extrude during sanding. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.", + "type": "float", + "unit": "%", + "default_value": 30.0, + "minimum_value": "0", + "maximum_value_warning": "50", + "enabled": "sanding_enabled", + "settable_per_mesh": true } } }, From f719be24846d7d1a828c3b6393d4e7cde83eb5cd Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 2 Jun 2017 11:35:11 +0200 Subject: [PATCH 04/23] Be robust against faulty data from the engine We modify the line types that we get from the engine so that it's always within range. This was a bug I found during development of CURA-3903. --- cura/LayerPolygon.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 2c527c7c7e..d6ab854169 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -1,4 +1,6 @@ -from UM.Math.Color import Color +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the AGPLv3 or higher. + from UM.Application import Application from typing import Any import numpy @@ -16,8 +18,9 @@ class LayerPolygon: MoveCombingType = 8 MoveRetractionType = 9 SupportInterfaceType = 10 - - __jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(11) == NoneType, numpy.arange(11) == MoveCombingType), numpy.arange(11) == MoveRetractionType) + __number_of_types = 11 + + __jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType, numpy.arange(__number_of_types) == MoveCombingType), numpy.arange(__number_of_types) == MoveRetractionType) ## LayerPolygon, used in ProcessSlicedLayersJob # \param extruder @@ -28,6 +31,9 @@ class LayerPolygon: def __init__(self, extruder, line_types, data, line_widths, line_thicknesses): self._extruder = extruder self._types = line_types + for i in range(len(self._types)): + if self._types[i] >= self.__number_of_types: #Got faulty line data from the engine. + self._types[i] = self.NoneType self._data = data self._line_widths = line_widths self._line_thicknesses = line_thicknesses @@ -36,11 +42,11 @@ class LayerPolygon: self._vertex_end = 0 self._index_begin = 0 self._index_end = 0 - + self._jump_mask = self.__jump_map[self._types] self._jump_count = numpy.sum(self._jump_mask) - self._mesh_line_count = len(self._types)-self._jump_count - self._vertex_count = self._mesh_line_count + numpy.sum( self._types[1:] == self._types[:-1]) + self._mesh_line_count = len(self._types) - self._jump_count + self._vertex_count = self._mesh_line_count + numpy.sum(self._types[1:] == self._types[:-1]) # Buffering the colors shouldn't be necessary as it is not # re-used and can save alot of memory usage. From d9f03790dc7da3490f7e9a3ea767ec3cb05b2ad3 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 2 Jun 2017 15:29:23 +0200 Subject: [PATCH 05/23] Remove lines pattern from sanding The lines pattern is essentially the same as zigzag if you're extruding nothing or very little. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index aa6b244ac2..bb1633b0f3 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5356,7 +5356,6 @@ "type": "enum", "options": { - "lines": "Lines", "concentric": "Concentric", "zigzag": "Zig Zag" }, From c69b3110be16a7b0379359a82bb165ff095d1621 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 2 Jun 2017 15:53:17 +0200 Subject: [PATCH 06/23] Add line spacing setting This determines the distance between the passes of the sanding nozzle over the surface. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index bb1633b0f3..6b103e1e8d 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5363,6 +5363,17 @@ "enabled": "sanding_enabled", "settable_per_mesh": true }, + "sanding_line_spacing": + { + "label": "Sanding Line Spacing", + "description": "The distance between the lines of sanding.", + "type": "float", + "unit": "mm", + "default_value": 0.1, + "minimum_value": "0.001", + "maximum_value_warning": "machine_nozzle_tip_outer_diameter", + "settable_per_mesh": true + }, "sanding_flow": { "label": "Sanding Flow", From ec7081d95a9f50d074d6deee3f507298328b14c8 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 2 Jun 2017 17:15:02 +0200 Subject: [PATCH 07/23] Add sanding speed setting The acceleration and jerk aren't adjustable yet (it uses top/bottom acceleration and jerk). Later, maybe. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6b103e1e8d..e53dfb3255 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5385,6 +5385,19 @@ "maximum_value_warning": "50", "enabled": "sanding_enabled", "settable_per_mesh": true + }, + "speed_sanding": + { + "label": "Sanding Speed", + "description": "The speed at which to pass over the top surface.", + "type": "float", + "unit": "mm/s", + "default_value": 20.0, + "minimum_value": "0.001", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", + "maximum_value_warning": "100", + "enabled": "sanding_enabled", + "settable_per_mesh": true } } }, From 5560fd2b117c4971a3f4865e1395dfa1d0572f33 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 6 Jun 2017 10:24:33 +0200 Subject: [PATCH 08/23] Move sanding speed to the speed category With the rest of the speeds. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index e53dfb3255..10da28e829 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1970,6 +1970,19 @@ "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, + "speed_sanding": + { + "label": "Sanding Speed", + "description": "The speed at which to pass over the top surface.", + "type": "float", + "unit": "mm/s", + "default_value": 20.0, + "minimum_value": "0.001", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", + "maximum_value_warning": "100", + "enabled": "sanding_enabled", + "settable_per_mesh": true + }, "speed_support": { "label": "Support Speed", @@ -5385,19 +5398,6 @@ "maximum_value_warning": "50", "enabled": "sanding_enabled", "settable_per_mesh": true - }, - "speed_sanding": - { - "label": "Sanding Speed", - "description": "The speed at which to pass over the top surface.", - "type": "float", - "unit": "mm/s", - "default_value": 20.0, - "minimum_value": "0.001", - "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", - "maximum_value_warning": "100", - "enabled": "sanding_enabled", - "settable_per_mesh": true } } }, From c30d529240924484937768aceac65c472713bb7c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 6 Jun 2017 10:26:01 +0200 Subject: [PATCH 09/23] Make sanding speed scale with top/bottom speed The default stays the same. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 10da28e829..a34535cfca 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1977,6 +1977,7 @@ "type": "float", "unit": "mm/s", "default_value": 20.0, + "value": "speed_topbottom * 20 / 30", "minimum_value": "0.001", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "100", From a1b10ea5286f685467d0f5180a7b6bf2cc47689c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 6 Jun 2017 10:29:57 +0200 Subject: [PATCH 10/23] Add sanding acceleration and jerk settings These are the same as the top/bottom acceleration and jerk. Perhaps it could be set a bit higher because quality isn't an issue here, but the jerk basically accounts for every acceleration we make at the low default speeds we're using right now. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index a34535cfca..72cb0735c8 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2310,6 +2310,21 @@ "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, + "acceleration_sanding": + { + "label": "Sanding Acceleration", + "description": "The acceleration with which sanding is performed.", + "unit": "mm/s²", + "type": "float", + "minimum_value": "0.1", + "minimum_value_warning": "100", + "maximum_value_warning": "10000", + "default_value": 3000, + "value": "acceleration_topbottom", + "enabled": "resolveOrValue('acceleration_enabled') and sanding_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, "acceleration_support": { "label": "Support Acceleration", @@ -2583,6 +2598,20 @@ "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, + "jerk_sanding": + { + "label": "Sanding Jerk", + "description": "The maximum instantaneous velocity change while performing sanding.", + "unit": "mm/s", + "type": "float", + "minimum_value": "0.1", + "maximum_value_warning": "50", + "default_value": 20, + "value": "jerk_topbottom", + "enabled": "resolveOrValue('jerk_enabled') and sanding_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, "jerk_support": { "label": "Support Jerk", From 600b8550375a5ded806115f1ae8da176526a676e Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 6 Jun 2017 10:53:05 +0200 Subject: [PATCH 11/23] Add sanding inset setting This performs an inset of the area which is sanded, so it doesn't sand all the way to the edge. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 72cb0735c8..0b67464b03 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5428,6 +5428,19 @@ "maximum_value_warning": "50", "enabled": "sanding_enabled", "settable_per_mesh": true + }, + "sanding_inset": + { + "label": "Sanding Inset", + "description": "A distance to keep from the edges of the model. Sanding all the way to the edge of the mesh may result in a jagged edge on your print.", + "type": "float", + "unit": "mm", + "default_value": 0.35, + "value": "skin_line_width", + "minimum_value_warning": "0", + "maximum_value_warning": "wall_line_width_0", + "enabled": "sanding_enabled", + "settable_per_mesh": true } } }, From 762dbe44b5807a186cb2477cef0a1a166f4a14be Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 6 Jun 2017 10:54:01 +0200 Subject: [PATCH 12/23] Fix default for sanding pattern The previous default wasn't even in the options. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 0b67464b03..bb33433be0 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5402,7 +5402,7 @@ "concentric": "Concentric", "zigzag": "Zig Zag" }, - "default_value": "lines", + "default_value": "zigzag", "enabled": "sanding_enabled", "settable_per_mesh": true }, From f9b792ef765d20ee48938021bf9044f6b7d0484d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 6 Jun 2017 10:54:53 +0200 Subject: [PATCH 13/23] Set default for sanding flow to 10% 30% is way too much. 10% is a bit much too I think but it produces nice results in the long run. 5% is too little. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index bb33433be0..545452f546 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5423,7 +5423,7 @@ "description": "The amount of material, relative to a normal skin line, to extrude during sanding. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.", "type": "float", "unit": "%", - "default_value": 30.0, + "default_value": 10.0, "minimum_value": "0", "maximum_value_warning": "50", "enabled": "sanding_enabled", From 7135a26c1b36a2776694b0783942dc1267118056 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 6 Jun 2017 11:03:32 +0200 Subject: [PATCH 14/23] Adjust default for sanding inset to half line width This way it ends up at the very top of the outer wall, which may work better. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 545452f546..469df19cf9 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5436,7 +5436,7 @@ "type": "float", "unit": "mm", "default_value": 0.35, - "value": "skin_line_width", + "value": "wall_line_width_0 / 2", "minimum_value_warning": "0", "maximum_value_warning": "wall_line_width_0", "enabled": "sanding_enabled", From 5eab3191afa1e1d06676cfd13007a8cb298c4286 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 6 Jun 2017 11:09:36 +0200 Subject: [PATCH 15/23] Limit sanding settings to top/bottom extruder Makes sense that whether you need to sand is based on the material used for most of the material that you're sanding over. You're also sanding over the walls, but the skin is hopefully more telling for the types of surfaces you're sanding. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 469df19cf9..ee9ad7a3bc 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1982,6 +1982,7 @@ "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "100", "enabled": "sanding_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "speed_support": @@ -5390,6 +5391,7 @@ "description": "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface.", "type": "bool", "default_value": false, + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "sanding_pattern": @@ -5404,6 +5406,7 @@ }, "default_value": "zigzag", "enabled": "sanding_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "sanding_line_spacing": @@ -5415,6 +5418,7 @@ "default_value": 0.1, "minimum_value": "0.001", "maximum_value_warning": "machine_nozzle_tip_outer_diameter", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "sanding_flow": @@ -5427,6 +5431,7 @@ "minimum_value": "0", "maximum_value_warning": "50", "enabled": "sanding_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "sanding_inset": @@ -5440,6 +5445,7 @@ "minimum_value_warning": "0", "maximum_value_warning": "wall_line_width_0", "enabled": "sanding_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } From d705ca1b1da49cb4010d9bfd0bcb42ec704cf18f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 6 Jun 2017 11:13:24 +0200 Subject: [PATCH 16/23] Only enable sanding line spacing when sanding is enabled Forgot this one. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ee9ad7a3bc..e1e2e7972e 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5418,6 +5418,7 @@ "default_value": 0.1, "minimum_value": "0.001", "maximum_value_warning": "machine_nozzle_tip_outer_diameter", + "enabled": "sanding_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, From 0c9556a48c079a980603f0ca041e2b194f1852a3 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 15 Jun 2017 08:54:44 +0200 Subject: [PATCH 17/23] Rename Sanding to Ironing Just the user-visible name. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index e1e2e7972e..9b0bbbe5f1 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5387,7 +5387,7 @@ }, "sanding_enabled": { - "label": "Enable Sanding", + "label": "Enable Ironing", "description": "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface.", "type": "bool", "default_value": false, @@ -5396,8 +5396,8 @@ }, "sanding_pattern": { - "label": "Sanding Pattern", - "description": "The pattern to use for sanding top surfaces.", + "label": "Ironing Pattern", + "description": "The pattern to use for ironing top surfaces.", "type": "enum", "options": { @@ -5411,8 +5411,8 @@ }, "sanding_line_spacing": { - "label": "Sanding Line Spacing", - "description": "The distance between the lines of sanding.", + "label": "Ironing Line Spacing", + "description": "The distance between the lines of ironing.", "type": "float", "unit": "mm", "default_value": 0.1, @@ -5424,8 +5424,8 @@ }, "sanding_flow": { - "label": "Sanding Flow", - "description": "The amount of material, relative to a normal skin line, to extrude during sanding. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.", + "label": "Ironing Flow", + "description": "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.", "type": "float", "unit": "%", "default_value": 10.0, @@ -5437,8 +5437,8 @@ }, "sanding_inset": { - "label": "Sanding Inset", - "description": "A distance to keep from the edges of the model. Sanding all the way to the edge of the mesh may result in a jagged edge on your print.", + "label": "Ironing Inset", + "description": "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print.", "type": "float", "unit": "mm", "default_value": 0.35, From a7ed0d011ad60f878629b86a1df6113718c0423a Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 15 Jun 2017 15:17:42 +0200 Subject: [PATCH 18/23] Rename speed settings for sanding to ironing This is consistent with the rest. I had forgotten these since they are in a different category. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 9b0bbbe5f1..8cba7c1711 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1972,7 +1972,7 @@ }, "speed_sanding": { - "label": "Sanding Speed", + "label": "Ironing Speed", "description": "The speed at which to pass over the top surface.", "type": "float", "unit": "mm/s", @@ -2313,8 +2313,8 @@ }, "acceleration_sanding": { - "label": "Sanding Acceleration", - "description": "The acceleration with which sanding is performed.", + "label": "Ironing Acceleration", + "description": "The acceleration with which ironing is performed.", "unit": "mm/s²", "type": "float", "minimum_value": "0.1", @@ -2601,8 +2601,8 @@ }, "jerk_sanding": { - "label": "Sanding Jerk", - "description": "The maximum instantaneous velocity change while performing sanding.", + "label": "Ironing Jerk", + "description": "The maximum instantaneous velocity change while performing ironing.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", From 092483cac5e7d6fb478502c3fca666d60627b905 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 15 Jun 2017 15:19:45 +0200 Subject: [PATCH 19/23] Rename setting ids for sanding to ironing This makes the code easier to follow since we consistently use the same terms for things in our code as what is user-visible. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 8cba7c1711..d3226361b7 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2599,7 +2599,7 @@ "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, - "jerk_sanding": + "jerk_ironing": { "label": "Ironing Jerk", "description": "The maximum instantaneous velocity change while performing ironing.", @@ -2609,7 +2609,7 @@ "maximum_value_warning": "50", "default_value": 20, "value": "jerk_topbottom", - "enabled": "resolveOrValue('jerk_enabled') and sanding_enabled", + "enabled": "resolveOrValue('jerk_enabled') and ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, @@ -5385,7 +5385,7 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "sanding_enabled": + "ironing_enabled": { "label": "Enable Ironing", "description": "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface.", @@ -5394,7 +5394,7 @@ "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, - "sanding_pattern": + "ironing_pattern": { "label": "Ironing Pattern", "description": "The pattern to use for ironing top surfaces.", @@ -5405,11 +5405,11 @@ "zigzag": "Zig Zag" }, "default_value": "zigzag", - "enabled": "sanding_enabled", + "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, - "sanding_line_spacing": + "ironing_line_spacing": { "label": "Ironing Line Spacing", "description": "The distance between the lines of ironing.", @@ -5418,11 +5418,11 @@ "default_value": 0.1, "minimum_value": "0.001", "maximum_value_warning": "machine_nozzle_tip_outer_diameter", - "enabled": "sanding_enabled", + "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, - "sanding_flow": + "ironing_flow": { "label": "Ironing Flow", "description": "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.", @@ -5431,11 +5431,11 @@ "default_value": 10.0, "minimum_value": "0", "maximum_value_warning": "50", - "enabled": "sanding_enabled", + "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, - "sanding_inset": + "ironing_inset": { "label": "Ironing Inset", "description": "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print.", @@ -5445,7 +5445,7 @@ "value": "wall_line_width_0 / 2", "minimum_value_warning": "0", "maximum_value_warning": "wall_line_width_0", - "enabled": "sanding_enabled", + "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } From b4559eba2df3e493c011b34f929034168a542cf4 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 15 Jun 2017 16:38:12 +0200 Subject: [PATCH 20/23] Rename forgotten sanding settings to ironing Oops. Contributes to issue CURA-3903. --- resources/definitions/fdmprinter.def.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index d3226361b7..98339d2914 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1970,7 +1970,7 @@ "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, - "speed_sanding": + "speed_ironing": { "label": "Ironing Speed", "description": "The speed at which to pass over the top surface.", @@ -1981,7 +1981,7 @@ "minimum_value": "0.001", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "100", - "enabled": "sanding_enabled", + "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, @@ -2311,7 +2311,7 @@ "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, - "acceleration_sanding": + "acceleration_ironing": { "label": "Ironing Acceleration", "description": "The acceleration with which ironing is performed.", @@ -2322,7 +2322,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_topbottom", - "enabled": "resolveOrValue('acceleration_enabled') and sanding_enabled", + "enabled": "resolveOrValue('acceleration_enabled') and ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, From adfe6ce63a413311df1bcdbbf7bec1e46a16d6b0 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 16 Jun 2017 10:59:45 +0200 Subject: [PATCH 21/23] Add #version 120 to make shaders work on Windows USL-32 --- plugins/LayerView/layers.shader | 2 ++ plugins/LayerView/layerview_composite.shader | 2 ++ resources/shaders/grid.shader | 2 ++ resources/shaders/overhang.shader | 2 ++ resources/shaders/striped.shader | 2 ++ resources/shaders/transparent_object.shader | 2 ++ 6 files changed, 12 insertions(+) diff --git a/plugins/LayerView/layers.shader b/plugins/LayerView/layers.shader index cb92b0caef..4173721e17 100755 --- a/plugins/LayerView/layers.shader +++ b/plugins/LayerView/layers.shader @@ -1,5 +1,6 @@ [shaders] vertex = + #version 120 uniform highp mat4 u_modelViewProjectionMatrix; uniform lowp float u_active_extruder; uniform lowp float u_shade_factor; @@ -28,6 +29,7 @@ vertex = } fragment = + #version 120 varying lowp vec4 v_color; varying float v_line_type; diff --git a/plugins/LayerView/layerview_composite.shader b/plugins/LayerView/layerview_composite.shader index 918f02aea1..3975c64bd4 100644 --- a/plugins/LayerView/layerview_composite.shader +++ b/plugins/LayerView/layerview_composite.shader @@ -1,5 +1,6 @@ [shaders] vertex = + #version 120 uniform highp mat4 u_modelViewProjectionMatrix; attribute highp vec4 a_vertex; attribute highp vec2 a_uvs; @@ -13,6 +14,7 @@ vertex = } fragment = + #version 120 uniform sampler2D u_layer0; uniform sampler2D u_layer1; uniform sampler2D u_layer2; diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index c05b9ba15c..0b090adc8e 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -1,5 +1,6 @@ [shaders] vertex = + #version 120 uniform highp mat4 u_modelViewProjectionMatrix; attribute highp vec4 a_vertex; @@ -14,6 +15,7 @@ vertex = } fragment = + #version 120 uniform lowp vec4 u_gridColor0; uniform lowp vec4 u_gridColor1; diff --git a/resources/shaders/overhang.shader b/resources/shaders/overhang.shader index 4e5999a693..b7e9f0df1a 100644 --- a/resources/shaders/overhang.shader +++ b/resources/shaders/overhang.shader @@ -1,5 +1,6 @@ [shaders] vertex = + #version 120 uniform highp mat4 u_modelMatrix; uniform highp mat4 u_viewProjectionMatrix; uniform highp mat4 u_normalMatrix; @@ -21,6 +22,7 @@ vertex = } fragment = + #version 120 uniform mediump vec4 u_ambientColor; uniform mediump vec4 u_diffuseColor; uniform mediump vec4 u_specularColor; diff --git a/resources/shaders/striped.shader b/resources/shaders/striped.shader index 0114f0b2cb..837264d8b1 100644 --- a/resources/shaders/striped.shader +++ b/resources/shaders/striped.shader @@ -1,5 +1,6 @@ [shaders] vertex = + #version 120 uniform highp mat4 u_modelMatrix; uniform highp mat4 u_viewProjectionMatrix; uniform highp mat4 u_normalMatrix; @@ -23,6 +24,7 @@ vertex = } fragment = + #version 120 uniform mediump vec4 u_ambientColor; uniform mediump vec4 u_diffuseColor1; uniform mediump vec4 u_diffuseColor2; diff --git a/resources/shaders/transparent_object.shader b/resources/shaders/transparent_object.shader index cd27a40769..0a01f918b5 100644 --- a/resources/shaders/transparent_object.shader +++ b/resources/shaders/transparent_object.shader @@ -1,5 +1,6 @@ [shaders] vertex = + #version 120 uniform highp mat4 u_modelMatrix; uniform highp mat4 u_viewProjectionMatrix; uniform highp mat4 u_normalMatrix; @@ -21,6 +22,7 @@ vertex = } fragment = + #version 120 uniform mediump vec4 u_ambientColor; uniform mediump vec4 u_diffuseColor; uniform highp vec3 u_lightPosition; From ade9c296aed047ae0cdfe9b0b619641baf8e7eff Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 16 Jun 2017 11:46:33 +0200 Subject: [PATCH 22/23] Revert "Add #version 120 to make shaders work on Windows" USL-32 This breaks OpenGL shaders on Windows and Mac. --- plugins/LayerView/layers.shader | 2 -- plugins/LayerView/layerview_composite.shader | 2 -- resources/shaders/grid.shader | 2 -- resources/shaders/overhang.shader | 2 -- resources/shaders/striped.shader | 2 -- resources/shaders/transparent_object.shader | 2 -- 6 files changed, 12 deletions(-) diff --git a/plugins/LayerView/layers.shader b/plugins/LayerView/layers.shader index 4173721e17..cb92b0caef 100755 --- a/plugins/LayerView/layers.shader +++ b/plugins/LayerView/layers.shader @@ -1,6 +1,5 @@ [shaders] vertex = - #version 120 uniform highp mat4 u_modelViewProjectionMatrix; uniform lowp float u_active_extruder; uniform lowp float u_shade_factor; @@ -29,7 +28,6 @@ vertex = } fragment = - #version 120 varying lowp vec4 v_color; varying float v_line_type; diff --git a/plugins/LayerView/layerview_composite.shader b/plugins/LayerView/layerview_composite.shader index 3975c64bd4..918f02aea1 100644 --- a/plugins/LayerView/layerview_composite.shader +++ b/plugins/LayerView/layerview_composite.shader @@ -1,6 +1,5 @@ [shaders] vertex = - #version 120 uniform highp mat4 u_modelViewProjectionMatrix; attribute highp vec4 a_vertex; attribute highp vec2 a_uvs; @@ -14,7 +13,6 @@ vertex = } fragment = - #version 120 uniform sampler2D u_layer0; uniform sampler2D u_layer1; uniform sampler2D u_layer2; diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index 0b090adc8e..c05b9ba15c 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -1,6 +1,5 @@ [shaders] vertex = - #version 120 uniform highp mat4 u_modelViewProjectionMatrix; attribute highp vec4 a_vertex; @@ -15,7 +14,6 @@ vertex = } fragment = - #version 120 uniform lowp vec4 u_gridColor0; uniform lowp vec4 u_gridColor1; diff --git a/resources/shaders/overhang.shader b/resources/shaders/overhang.shader index b7e9f0df1a..4e5999a693 100644 --- a/resources/shaders/overhang.shader +++ b/resources/shaders/overhang.shader @@ -1,6 +1,5 @@ [shaders] vertex = - #version 120 uniform highp mat4 u_modelMatrix; uniform highp mat4 u_viewProjectionMatrix; uniform highp mat4 u_normalMatrix; @@ -22,7 +21,6 @@ vertex = } fragment = - #version 120 uniform mediump vec4 u_ambientColor; uniform mediump vec4 u_diffuseColor; uniform mediump vec4 u_specularColor; diff --git a/resources/shaders/striped.shader b/resources/shaders/striped.shader index 837264d8b1..0114f0b2cb 100644 --- a/resources/shaders/striped.shader +++ b/resources/shaders/striped.shader @@ -1,6 +1,5 @@ [shaders] vertex = - #version 120 uniform highp mat4 u_modelMatrix; uniform highp mat4 u_viewProjectionMatrix; uniform highp mat4 u_normalMatrix; @@ -24,7 +23,6 @@ vertex = } fragment = - #version 120 uniform mediump vec4 u_ambientColor; uniform mediump vec4 u_diffuseColor1; uniform mediump vec4 u_diffuseColor2; diff --git a/resources/shaders/transparent_object.shader b/resources/shaders/transparent_object.shader index 0a01f918b5..cd27a40769 100644 --- a/resources/shaders/transparent_object.shader +++ b/resources/shaders/transparent_object.shader @@ -1,6 +1,5 @@ [shaders] vertex = - #version 120 uniform highp mat4 u_modelMatrix; uniform highp mat4 u_viewProjectionMatrix; uniform highp mat4 u_normalMatrix; @@ -22,7 +21,6 @@ vertex = } fragment = - #version 120 uniform mediump vec4 u_ambientColor; uniform mediump vec4 u_diffuseColor; uniform highp vec3 u_lightPosition; From 90436c3b6947234fb60c0d798f42d93c6f883f33 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 16 Jun 2017 11:47:14 +0200 Subject: [PATCH 23/23] Revert "Removed unneeded shader duplication." USL-32 This breaks the OpenGL shaders on Windows and Mac. --- plugins/LayerView/layers.shader | 68 +++++++++++++++++++ plugins/LayerView/layerview_composite.shader | 69 +++++++++++++++++++ plugins/XRayView/xray_composite.shader | 71 ++++++++++++++++++++ resources/shaders/grid.shader | 31 +++++++++ resources/shaders/overhang.shader | 67 ++++++++++++++++++ resources/shaders/striped.shader | 68 +++++++++++++++++++ resources/shaders/transparent_object.shader | 53 +++++++++++++++ 7 files changed, 427 insertions(+) diff --git a/plugins/LayerView/layers.shader b/plugins/LayerView/layers.shader index cb92b0caef..d340773403 100755 --- a/plugins/LayerView/layers.shader +++ b/plugins/LayerView/layers.shader @@ -66,6 +66,74 @@ fragment = gl_FragColor = v_color; } +vertex41core = + #version 410 + uniform highp mat4 u_modelViewProjectionMatrix; + uniform lowp float u_active_extruder; + uniform lowp float u_shade_factor; + uniform highp int u_layer_view_type; + + in highp float a_extruder; + in highp float a_line_type; + in highp vec4 a_vertex; + in lowp vec4 a_color; + in lowp vec4 a_material_color; + + out lowp vec4 v_color; + out float v_line_type; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_color = a_color; + if ((a_line_type != 8) && (a_line_type != 9)) { + v_color = (a_extruder == u_active_extruder) ? v_color : vec4(u_shade_factor * v_color.rgb, v_color.a); + } + + v_line_type = a_line_type; + } + +fragment41core = + #version 410 + in lowp vec4 v_color; + in float v_line_type; + out vec4 frag_color; + + uniform int u_show_travel_moves; + uniform int u_show_helpers; + uniform int u_show_skin; + uniform int u_show_infill; + + void main() + { + if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5)) { // actually, 8 and 9 + // discard movements + discard; + } + // helpers: 4, 5, 7, 10 + if ((u_show_helpers == 0) && ( + ((v_line_type >= 3.5) && (v_line_type <= 4.5)) || + ((v_line_type >= 6.5) && (v_line_type <= 7.5)) || + ((v_line_type >= 9.5) && (v_line_type <= 10.5)) || + ((v_line_type >= 4.5) && (v_line_type <= 5.5)) + )) { + discard; + } + // skin: 1, 2, 3 + if ((u_show_skin == 0) && ( + (v_line_type >= 0.5) && (v_line_type <= 3.5) + )) { + discard; + } + // infill: + if ((u_show_infill == 0) && (v_line_type >= 5.5) && (v_line_type <= 6.5)) { + // discard movements + discard; + } + + frag_color = v_color; + } + [defaults] u_active_extruder = 0.0 u_shade_factor = 0.60 diff --git a/plugins/LayerView/layerview_composite.shader b/plugins/LayerView/layerview_composite.shader index 918f02aea1..dcc02acc84 100644 --- a/plugins/LayerView/layerview_composite.shader +++ b/plugins/LayerView/layerview_composite.shader @@ -64,6 +64,75 @@ fragment = } } +vertex41core = + #version 410 + uniform highp mat4 u_modelViewProjectionMatrix; + in highp vec4 a_vertex; + in highp vec2 a_uvs; + + out highp vec2 v_uvs; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_uvs = a_uvs; + } + +fragment41core = + #version 410 + uniform sampler2D u_layer0; + uniform sampler2D u_layer1; + uniform sampler2D u_layer2; + + uniform vec2 u_offset[9]; + + uniform vec4 u_background_color; + uniform float u_outline_strength; + uniform vec4 u_outline_color; + + in vec2 v_uvs; + + float kernel[9]; + + const vec3 x_axis = vec3(1.0, 0.0, 0.0); + const vec3 y_axis = vec3(0.0, 1.0, 0.0); + const vec3 z_axis = vec3(0.0, 0.0, 1.0); + + out vec4 frag_color; + + void main() + { + // blur kernel + kernel[0] = 0.0; kernel[1] = 1.0; kernel[2] = 0.0; + kernel[3] = 1.0; kernel[4] = -4.0; kernel[5] = 1.0; + kernel[6] = 0.0; kernel[7] = 1.0; kernel[8] = 0.0; + + vec4 result = u_background_color; + + vec4 main_layer = texture(u_layer0, v_uvs); + vec4 selection_layer = texture(u_layer1, v_uvs); + vec4 layerview_layer = texture(u_layer2, v_uvs); + + result = main_layer * main_layer.a + result * (1.0 - main_layer.a); + result = layerview_layer * layerview_layer.a + result * (1.0 - layerview_layer.a); + + vec4 sum = vec4(0.0); + for (int i = 0; i < 9; i++) + { + vec4 color = vec4(texture(u_layer1, v_uvs.xy + u_offset[i]).a); + sum += color * (kernel[i] / u_outline_strength); + } + + if((selection_layer.rgb == x_axis || selection_layer.rgb == y_axis || selection_layer.rgb == z_axis)) + { + frag_color = result; + } + else + { + frag_color = mix(result, u_outline_color, abs(sum.a)); + } + } + [defaults] u_layer0 = 0 u_layer1 = 1 diff --git a/plugins/XRayView/xray_composite.shader b/plugins/XRayView/xray_composite.shader index e7a38950bf..82dca52cf9 100644 --- a/plugins/XRayView/xray_composite.shader +++ b/plugins/XRayView/xray_composite.shader @@ -67,6 +67,77 @@ fragment = } } +vertex41core = + #version 410 + uniform highp mat4 u_modelViewProjectionMatrix; + in highp vec4 a_vertex; + in highp vec2 a_uvs; + + out highp vec2 v_uvs; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_uvs = a_uvs; + } + +fragment41core = + #version 410 + uniform sampler2D u_layer0; + uniform sampler2D u_layer1; + uniform sampler2D u_layer2; + + uniform vec2 u_offset[9]; + + uniform float u_outline_strength; + uniform vec4 u_outline_color; + uniform vec4 u_error_color; + uniform vec4 u_background_color; + + const vec3 x_axis = vec3(1.0, 0.0, 0.0); + const vec3 y_axis = vec3(0.0, 1.0, 0.0); + const vec3 z_axis = vec3(0.0, 0.0, 1.0); + + in vec2 v_uvs; + out vec4 frag_color; + + float kernel[9]; + + void main() + { + kernel[0] = 0.0; kernel[1] = 1.0; kernel[2] = 0.0; + kernel[3] = 1.0; kernel[4] = -4.0; kernel[5] = 1.0; + kernel[6] = 0.0; kernel[7] = 1.0; kernel[8] = 0.0; + + vec4 result = u_background_color; + vec4 layer0 = texture(u_layer0, v_uvs); + + result = layer0 * layer0.a + result * (1.0 - layer0.a); + + float intersection_count = (texture(u_layer2, v_uvs).r * 255.0) / 5.0; + if(mod(intersection_count, 2.0) == 1.0) + { + result = u_error_color; + } + + vec4 sum = vec4(0.0); + for (int i = 0; i < 9; i++) + { + vec4 color = vec4(texture(u_layer1, v_uvs.xy + u_offset[i]).a); + sum += color * (kernel[i] / u_outline_strength); + } + + vec4 layer1 = texture(u_layer1, v_uvs); + if((layer1.rgb == x_axis || layer1.rgb == y_axis || layer1.rgb == z_axis)) + { + frag_color = result; + } + else + { + frag_color = mix(result, vec4(abs(sum.a)) * u_outline_color, abs(sum.a)); + } + } + [defaults] u_layer0 = 0 u_layer1 = 1 diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index c05b9ba15c..74eed544fd 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -27,6 +27,37 @@ fragment = gl_FragColor = u_gridColor1; } +vertex41core = + #version 410 + uniform highp mat4 u_modelViewProjectionMatrix; + + in highp vec4 a_vertex; + in lowp vec2 a_uvs; + + out lowp vec2 v_uvs; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_uvs = a_uvs; + } + +fragment41core = + #version 410 + uniform lowp vec4 u_gridColor0; + uniform lowp vec4 u_gridColor1; + + in lowp vec2 v_uvs; + out vec4 frag_color; + + void main() + { + if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) + frag_color = u_gridColor0; + else + frag_color = u_gridColor1; + } + [defaults] u_gridColor0 = [0.96, 0.96, 0.96, 1.0] u_gridColor1 = [0.8, 0.8, 0.8, 1.0] diff --git a/resources/shaders/overhang.shader b/resources/shaders/overhang.shader index 4e5999a693..b9cf53f8b7 100644 --- a/resources/shaders/overhang.shader +++ b/resources/shaders/overhang.shader @@ -62,6 +62,73 @@ fragment = gl_FragColor.a = 1.0; } +vertex41core = + #version 410 + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_normalMatrix; + + in highp vec4 a_vertex; + in highp vec4 a_normal; + in highp vec2 a_uvs; + + out highp vec3 f_vertex; + out highp vec3 f_normal; + + void main() + { + vec4 world_space_vert = u_modelMatrix * a_vertex; + gl_Position = u_viewProjectionMatrix * world_space_vert; + + f_vertex = world_space_vert.xyz; + f_normal = (u_normalMatrix * normalize(a_normal)).xyz; + } + +fragment41core = + #version 410 + uniform mediump vec4 u_ambientColor; + uniform mediump vec4 u_diffuseColor; + uniform mediump vec4 u_specularColor; + uniform highp vec3 u_lightPosition; + uniform mediump float u_shininess; + uniform highp vec3 u_viewPosition; + + uniform lowp float u_overhangAngle; + uniform lowp vec4 u_overhangColor; + + in highp vec3 f_vertex; + in highp vec3 f_normal; + + out vec4 frag_color; + + void main() + { + + mediump vec4 finalColor = vec4(0.0); + + // Ambient Component + finalColor += u_ambientColor; + + highp vec3 normal = normalize(f_normal); + highp vec3 lightDir = normalize(u_lightPosition - f_vertex); + + // Diffuse Component + highp float NdotL = clamp(abs(dot(normal, lightDir)), 0.0, 1.0); + finalColor += (NdotL * u_diffuseColor); + + // Specular Component + // TODO: We should not do specularity for fragments facing away from the light. + highp vec3 reflectedLight = reflect(-lightDir, normal); + highp vec3 viewVector = normalize(u_viewPosition - f_vertex); + highp float NdotR = clamp(dot(viewVector, reflectedLight), 0.0, 1.0); + finalColor += pow(NdotR, u_shininess) * u_specularColor; + + finalColor = (-normal.y > u_overhangAngle) ? u_overhangColor : finalColor; + + frag_color = finalColor; + frag_color.a = 1.0; + } + [defaults] u_ambientColor = [0.3, 0.3, 0.3, 1.0] u_diffuseColor = [1.0, 0.79, 0.14, 1.0] diff --git a/resources/shaders/striped.shader b/resources/shaders/striped.shader index 0114f0b2cb..ce7d14e39e 100644 --- a/resources/shaders/striped.shader +++ b/resources/shaders/striped.shader @@ -63,6 +63,74 @@ fragment = gl_FragColor.a = 1.0; } +vertex41core = + #version 410 + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_normalMatrix; + + in highp vec4 a_vertex; + in highp vec4 a_normal; + in highp vec2 a_uvs; + + out highp vec3 v_position; + out highp vec3 v_vertex; + out highp vec3 v_normal; + + void main() + { + vec4 world_space_vert = u_modelMatrix * a_vertex; + gl_Position = u_viewProjectionMatrix * world_space_vert; + + v_position = gl_Position.xyz; + v_vertex = world_space_vert.xyz; + v_normal = (u_normalMatrix * normalize(a_normal)).xyz; + } + +fragment41core = + #version 410 + uniform mediump vec4 u_ambientColor; + uniform mediump vec4 u_diffuseColor1; + uniform mediump vec4 u_diffuseColor2; + uniform mediump vec4 u_specularColor; + uniform highp vec3 u_lightPosition; + uniform mediump float u_shininess; + uniform highp vec3 u_viewPosition; + + uniform mediump float u_width; + + in highp vec3 v_position; + in highp vec3 v_vertex; + in highp vec3 v_normal; + + out vec4 frag_color; + + void main() + { + mediump vec4 finalColor = vec4(0.0); + mediump vec4 diffuseColor = (mod((-v_position.x + v_position.y), u_width) < (u_width / 2.)) ? u_diffuseColor1 : u_diffuseColor2; + + /* Ambient Component */ + finalColor += u_ambientColor; + + highp vec3 normal = normalize(v_normal); + highp vec3 lightDir = normalize(u_lightPosition - v_vertex); + + /* Diffuse Component */ + highp float NdotL = clamp(abs(dot(normal, lightDir)), 0.0, 1.0); + finalColor += (NdotL * diffuseColor); + + /* Specular Component */ + /* TODO: We should not do specularity for fragments facing away from the light.*/ + highp vec3 reflectedLight = reflect(-lightDir, normal); + highp vec3 viewVector = normalize(u_viewPosition - v_vertex); + highp float NdotR = clamp(dot(viewVector, reflectedLight), 0.0, 1.0); + finalColor += pow(NdotR, u_shininess) * u_specularColor; + + frag_color = finalColor; + frag_color.a = 1.0; + } + [defaults] u_ambientColor = [0.3, 0.3, 0.3, 1.0] u_diffuseColor1 = [1.0, 0.5, 0.5, 1.0] diff --git a/resources/shaders/transparent_object.shader b/resources/shaders/transparent_object.shader index cd27a40769..faa43bb46c 100644 --- a/resources/shaders/transparent_object.shader +++ b/resources/shaders/transparent_object.shader @@ -48,6 +48,59 @@ fragment = gl_FragColor.a = u_opacity; } +vertex41core = + #version 410 + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_normalMatrix; + + in highp vec4 a_vertex; + in highp vec4 a_normal; + in highp vec2 a_uvs; + + out highp vec3 v_vertex; + out highp vec3 v_normal; + + void main() + { + vec4 world_space_vert = u_modelMatrix * a_vertex; + gl_Position = u_viewProjectionMatrix * world_space_vert; + + v_vertex = world_space_vert.xyz; + v_normal = (u_normalMatrix * normalize(a_normal)).xyz; + } + +fragment41core = + #version 410 + uniform mediump vec4 u_ambientColor; + uniform mediump vec4 u_diffuseColor; + uniform highp vec3 u_lightPosition; + + uniform mediump float u_opacity; + + in highp vec3 v_vertex; + in highp vec3 v_normal; + + out vec4 frag_color; + + void main() + { + mediump vec4 finalColor = vec4(0.0); + + /* Ambient Component */ + finalColor += u_ambientColor; + + highp vec3 normal = normalize(v_normal); + highp vec3 lightDir = normalize(u_lightPosition - v_vertex); + + /* Diffuse Component */ + highp float NdotL = clamp(abs(dot(normal, lightDir)), 0.0, 1.0); + finalColor += (NdotL * u_diffuseColor); + + frag_color = finalColor; + frag_color.a = u_opacity; + } + [defaults] u_ambientColor = [0.1, 0.1, 0.1, 1.0] u_diffuseColor = [0.4, 0.4, 0.4, 1.0]