mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-04 10:40:09 -06:00
Update Solarbrowsing branch to compile on latest master
Also includes some additional minor changes from the original feature/solarbrowsing branch
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -53,3 +53,6 @@
|
||||
[submodule "support/cmake/common-compile-settings"]
|
||||
path = support/cmake/common-compile-settings
|
||||
url = https://github.com/OpenSpace/common-compile-settings
|
||||
[submodule "modules/solarbrowsing/ext/openjpeg"]
|
||||
path = modules/solarbrowsing/ext/openjpeg
|
||||
url = https://github.com/uclouvain/openjpeg.git
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
-- local assetHelper = asset.require('util/asset_helper')
|
||||
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local earthTransforms = asset.require('scene/solarsystem/planets/earth/transforms')
|
||||
|
||||
local SdoTrail = {
|
||||
Identifier = "SolarImagery_SDO_Trail",
|
||||
Parent = earthTransforms.EarthInertial.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailOrbit",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Frame = "J2000",
|
||||
Target = "-136395",
|
||||
Observer = "EARTH",
|
||||
},
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Period = 0.997319,
|
||||
Resolution = 1000
|
||||
},
|
||||
GUI = {
|
||||
Name = "Sdo Trail",
|
||||
Path = "/Solar System/Solar Imagery"
|
||||
}
|
||||
}
|
||||
|
||||
-- Translate in Earth's coordinate system from earth's position
|
||||
local Sdo = {
|
||||
Identifier = "Sdo",
|
||||
Parent = earthTransforms.EarthInertial.Identifier,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "-136395",
|
||||
Observer = "EARTH",
|
||||
Frame = "J2000"
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "ECLIPJ2000",
|
||||
DestinationFrame = "J2000",
|
||||
}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Sdo",
|
||||
Path = "/Solar System/Solar Imagery"
|
||||
}
|
||||
}
|
||||
|
||||
local StereoA = {
|
||||
Identifier = "StereoA_Position",
|
||||
Parent = sunTransforms.SolarSystemBarycenter.Identifier,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "-234",
|
||||
Observer = "SSB",
|
||||
Frame = "Galactic"
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "ECLIPJ2000",
|
||||
DestinationFrame = "GALACTIC",
|
||||
},
|
||||
},
|
||||
GUI = {
|
||||
Name = "Stereo A",
|
||||
Path = "/Solar System/Solar Imagery"
|
||||
}
|
||||
}
|
||||
|
||||
local StereoImagery = {
|
||||
Identifier = "SolarImagery_STEREO-A_Image_EUV",
|
||||
Parent = StereoA.Identifier,
|
||||
Renderable = {
|
||||
-- Resolution of imagery, will be moved to metadata later
|
||||
Type = "RenderableSolarImagery",
|
||||
RootPath = asset.resource("solarbrowsing/imagedata/stereo-a_euvi-171"),
|
||||
TransferfunctionPath = asset.resource("solarbrowsing/colortables")
|
||||
},
|
||||
GUI = {
|
||||
Name = "EUV-I-A Imagery",
|
||||
Path = "/Solar System/Solar Imagery"
|
||||
}
|
||||
}
|
||||
|
||||
local SdoImagery = {
|
||||
Identifier = "SolarImagery_SDO_Image_AIA",
|
||||
Parent = Sdo.Identifier,
|
||||
Renderable = {
|
||||
-- Resolution of imagery, will be moved to metadata later
|
||||
Type = "RenderableSolarImagery",
|
||||
RootPath = asset.resource("solarbrowsing/imagedata/sdo_aia-171"),
|
||||
TransferfunctionPath = asset.resource("solarbrowsing/colortables")
|
||||
},
|
||||
GUI = {
|
||||
Name = "SDO Imagery",
|
||||
Path = "/Solar System/Solar Imagery"
|
||||
}
|
||||
}
|
||||
|
||||
local SunProjection = {
|
||||
Identifier = "SunProjection",
|
||||
Parent = sunTransforms.SunIAU.Identifier,
|
||||
Dependencies = {
|
||||
"SolarImagery_SDO_Image_AIA"
|
||||
},
|
||||
Renderable = {
|
||||
-- This is a really bad name
|
||||
Type = "RenderableSolarImageryProjection",
|
||||
DependentNodes = {
|
||||
"SolarImagery_SDO_Image_AIA",
|
||||
"SolarImagery_STEREO-A_Image_EUV"
|
||||
}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Sun Projection",
|
||||
Path = "/Solar System/Imagery"
|
||||
}
|
||||
}
|
||||
|
||||
-- stereo_kernels_bsp = asset.resource('kernels/STEREO-A_merged.bsp')
|
||||
|
||||
|
||||
asset.onInitialize(function ()
|
||||
-- openspace.spice.loadKernel(stereo_kernels_bsp)
|
||||
|
||||
openspace.addSceneGraphNode(SdoTrail)
|
||||
openspace.addSceneGraphNode(Sdo)
|
||||
openspace.addSceneGraphNode(SdoImagery)
|
||||
openspace.addSceneGraphNode(StereoA)
|
||||
openspace.addSceneGraphNode(StereoImagery)
|
||||
openspace.addSceneGraphNode(SunProjection)
|
||||
end
|
||||
)
|
||||
|
||||
asset.onDeinitialize(function ()
|
||||
openspace.removeSceneGraphNode(SunProjection)
|
||||
openspace.removeSceneGraphNode(SdoTrail)
|
||||
openspace.removeSceneGraphNode(SdoImagery)
|
||||
openspace.removeSceneGraphNode(Sdo)
|
||||
openspace.removeSceneGraphNode(StereoImagery)
|
||||
openspace.removeSceneGraphNode(StereoA)
|
||||
end
|
||||
)
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0.0 0 0 0 255
|
||||
mappingkey 0.00392156885937 0 1 1 255
|
||||
mappingkey 0.00784313771874 0 2 2 255
|
||||
mappingkey 0.0117647061124 0 4 4 255
|
||||
mappingkey 0.0156862754375 0 5 5 255
|
||||
mappingkey 0.0196078438312 0 7 7 255
|
||||
mappingkey 0.0235294122249 0 8 8 255
|
||||
mappingkey 0.0274509806186 0 10 10 255
|
||||
mappingkey 0.0313725508749 0 11 11 255
|
||||
mappingkey 0.0352941192687 0 13 13 255
|
||||
mappingkey 0.0392156876624 0 14 14 255
|
||||
mappingkey 0.0431372560561 0 15 15 255
|
||||
mappingkey 0.0470588244498 0 17 17 255
|
||||
mappingkey 0.0509803928435 0 18 18 255
|
||||
mappingkey 0.0549019612372 0 20 20 255
|
||||
mappingkey 0.0588235296309 0 21 21 255
|
||||
mappingkey 0.0627451017499 0 23 23 255
|
||||
mappingkey 0.0666666701436 0 24 24 255
|
||||
mappingkey 0.0705882385373 0 26 26 255
|
||||
mappingkey 0.074509806931 0 27 27 255
|
||||
mappingkey 0.0784313753247 0 28 28 255
|
||||
mappingkey 0.0823529437184 0 30 30 255
|
||||
mappingkey 0.0862745121121 0 31 31 255
|
||||
mappingkey 0.0901960805058 0 33 33 255
|
||||
mappingkey 0.0941176488996 0 34 34 255
|
||||
mappingkey 0.0980392172933 0 36 36 255
|
||||
mappingkey 0.101960785687 0 37 37 255
|
||||
mappingkey 0.105882354081 0 39 39 255
|
||||
mappingkey 0.109803922474 0 40 40 255
|
||||
mappingkey 0.113725490868 0 42 42 255
|
||||
mappingkey 0.117647059262 0 43 43 255
|
||||
mappingkey 0.121568627656 0 44 44 255
|
||||
mappingkey 0.1254902035 0 46 46 255
|
||||
mappingkey 0.129411771894 0 47 47 255
|
||||
mappingkey 0.133333340287 0 49 49 255
|
||||
mappingkey 0.137254908681 0 50 50 255
|
||||
mappingkey 0.141176477075 0 52 52 255
|
||||
mappingkey 0.145098045468 0 53 53 255
|
||||
mappingkey 0.149019613862 0 55 55 255
|
||||
mappingkey 0.152941182256 0 56 56 255
|
||||
mappingkey 0.156862750649 0 57 57 255
|
||||
mappingkey 0.160784319043 0 59 59 255
|
||||
mappingkey 0.164705887437 0 60 60 255
|
||||
mappingkey 0.168627455831 0 62 62 255
|
||||
mappingkey 0.172549024224 0 63 63 255
|
||||
mappingkey 0.176470592618 0 65 65 255
|
||||
mappingkey 0.180392161012 0 66 66 255
|
||||
mappingkey 0.184313729405 0 68 68 255
|
||||
mappingkey 0.188235297799 0 69 69 255
|
||||
mappingkey 0.192156866193 0 70 70 255
|
||||
mappingkey 0.196078434587 0 72 72 255
|
||||
mappingkey 0.20000000298 0 73 73 255
|
||||
mappingkey 0.203921571374 0 75 75 255
|
||||
mappingkey 0.207843139768 0 76 76 255
|
||||
mappingkey 0.211764708161 0 78 78 255
|
||||
mappingkey 0.215686276555 0 79 79 255
|
||||
mappingkey 0.219607844949 0 81 81 255
|
||||
mappingkey 0.223529413342 0 82 82 255
|
||||
mappingkey 0.227450981736 0 84 84 255
|
||||
mappingkey 0.23137255013 0 85 85 255
|
||||
mappingkey 0.235294118524 0 86 86 255
|
||||
mappingkey 0.239215686917 0 88 88 255
|
||||
mappingkey 0.243137255311 0 89 89 255
|
||||
mappingkey 0.247058823705 0 91 91 255
|
||||
mappingkey 0.250980407 0 92 92 255
|
||||
mappingkey 0.254901975393 0 94 94 255
|
||||
mappingkey 0.258823543787 0 95 95 255
|
||||
mappingkey 0.262745112181 0 97 97 255
|
||||
mappingkey 0.266666680574 0 98 98 255
|
||||
mappingkey 0.270588248968 0 99 99 255
|
||||
mappingkey 0.274509817362 0 101 101 255
|
||||
mappingkey 0.278431385756 0 102 102 255
|
||||
mappingkey 0.282352954149 0 104 104 255
|
||||
mappingkey 0.286274522543 0 105 105 255
|
||||
mappingkey 0.290196090937 0 107 107 255
|
||||
mappingkey 0.29411765933 0 108 108 255
|
||||
mappingkey 0.298039227724 0 110 110 255
|
||||
mappingkey 0.301960796118 0 111 111 255
|
||||
mappingkey 0.305882364511 0 113 113 255
|
||||
mappingkey 0.309803932905 0 114 114 255
|
||||
mappingkey 0.313725501299 0 115 115 255
|
||||
mappingkey 0.317647069693 0 117 117 255
|
||||
mappingkey 0.321568638086 0 118 118 255
|
||||
mappingkey 0.32549020648 0 120 120 255
|
||||
mappingkey 0.329411774874 0 121 121 255
|
||||
mappingkey 0.333333343267 0 123 123 255
|
||||
mappingkey 0.337254911661 0 124 124 255
|
||||
mappingkey 0.341176480055 0 126 126 255
|
||||
mappingkey 0.345098048449 0 127 127 255
|
||||
mappingkey 0.349019616842 0 128 128 255
|
||||
mappingkey 0.352941185236 0 130 130 255
|
||||
mappingkey 0.35686275363 0 131 131 255
|
||||
mappingkey 0.360784322023 0 133 133 255
|
||||
mappingkey 0.364705890417 0 134 134 255
|
||||
mappingkey 0.368627458811 0 136 136 255
|
||||
mappingkey 0.372549027205 0 137 137 255
|
||||
mappingkey 0.376470595598 0 139 139 255
|
||||
mappingkey 0.380392163992 0 140 140 255
|
||||
mappingkey 0.384313732386 0 141 141 255
|
||||
mappingkey 0.388235300779 0 143 143 255
|
||||
mappingkey 0.392156869173 0 144 144 255
|
||||
mappingkey 0.396078437567 0 146 146 255
|
||||
mappingkey 0.40000000596 0 147 147 255
|
||||
mappingkey 0.403921574354 0 149 149 255
|
||||
mappingkey 0.407843142748 0 150 150 255
|
||||
mappingkey 0.411764711142 0 152 152 255
|
||||
mappingkey 0.415686279535 0 153 153 255
|
||||
mappingkey 0.419607847929 0 155 155 255
|
||||
mappingkey 0.423529416323 0 156 156 255
|
||||
mappingkey 0.427450984716 0 157 157 255
|
||||
mappingkey 0.43137255311 0 159 159 255
|
||||
mappingkey 0.435294121504 0 160 160 255
|
||||
mappingkey 0.439215689898 0 162 162 255
|
||||
mappingkey 0.443137258291 0 163 163 255
|
||||
mappingkey 0.447058826685 0 165 165 255
|
||||
mappingkey 0.450980395079 0 166 166 255
|
||||
mappingkey 0.454901963472 0 168 168 255
|
||||
mappingkey 0.458823531866 0 169 169 255
|
||||
mappingkey 0.46274510026 0 170 170 255
|
||||
mappingkey 0.466666668653 0 172 172 255
|
||||
mappingkey 0.470588237047 0 173 173 255
|
||||
mappingkey 0.474509805441 1 175 175 255
|
||||
mappingkey 0.478431373835 3 176 176 255
|
||||
mappingkey 0.482352942228 5 178 178 255
|
||||
mappingkey 0.486274510622 7 179 179 255
|
||||
mappingkey 0.490196079016 9 181 181 255
|
||||
mappingkey 0.494117647409 11 182 182 255
|
||||
mappingkey 0.498039215803 13 184 184 255
|
||||
mappingkey 0.501960813999 15 185 185 255
|
||||
mappingkey 0.505882382393 17 186 186 255
|
||||
mappingkey 0.509803950787 18 188 188 255
|
||||
mappingkey 0.51372551918 20 189 189 255
|
||||
mappingkey 0.517647087574 22 191 191 255
|
||||
mappingkey 0.521568655968 24 192 192 255
|
||||
mappingkey 0.525490224361 26 194 194 255
|
||||
mappingkey 0.529411792755 28 195 195 255
|
||||
mappingkey 0.533333361149 30 197 197 255
|
||||
mappingkey 0.537254929543 32 198 198 255
|
||||
mappingkey 0.541176497936 34 199 199 255
|
||||
mappingkey 0.54509806633 35 201 201 255
|
||||
mappingkey 0.549019634724 37 202 202 255
|
||||
mappingkey 0.552941203117 39 204 204 255
|
||||
mappingkey 0.556862771511 41 205 205 255
|
||||
mappingkey 0.560784339905 43 207 207 255
|
||||
mappingkey 0.564705908298 45 208 208 255
|
||||
mappingkey 0.568627476692 47 210 210 255
|
||||
mappingkey 0.572549045086 49 211 211 255
|
||||
mappingkey 0.57647061348 51 212 212 255
|
||||
mappingkey 0.580392181873 52 214 214 255
|
||||
mappingkey 0.584313750267 54 215 215 255
|
||||
mappingkey 0.588235318661 56 217 217 255
|
||||
mappingkey 0.592156887054 58 218 218 255
|
||||
mappingkey 0.596078455448 60 220 220 255
|
||||
mappingkey 0.600000023842 62 221 221 255
|
||||
mappingkey 0.603921592236 64 223 223 255
|
||||
mappingkey 0.607843160629 66 224 224 255
|
||||
mappingkey 0.611764729023 68 226 226 255
|
||||
mappingkey 0.615686297417 69 227 227 255
|
||||
mappingkey 0.61960786581 71 228 228 255
|
||||
mappingkey 0.623529434204 73 230 230 255
|
||||
mappingkey 0.627451002598 75 231 231 255
|
||||
mappingkey 0.631372570992 77 233 233 255
|
||||
mappingkey 0.635294139385 79 234 234 255
|
||||
mappingkey 0.639215707779 81 236 236 255
|
||||
mappingkey 0.643137276173 83 237 237 255
|
||||
mappingkey 0.647058844566 85 239 239 255
|
||||
mappingkey 0.65098041296 86 240 240 255
|
||||
mappingkey 0.654901981354 88 241 241 255
|
||||
mappingkey 0.658823549747 90 243 243 255
|
||||
mappingkey 0.662745118141 92 244 244 255
|
||||
mappingkey 0.666666686535 94 246 246 255
|
||||
mappingkey 0.670588254929 96 247 247 255
|
||||
mappingkey 0.674509823322 98 249 249 255
|
||||
mappingkey 0.678431391716 100 250 250 255
|
||||
mappingkey 0.68235296011 102 252 252 255
|
||||
mappingkey 0.686274528503 103 253 253 255
|
||||
mappingkey 0.690196096897 105 255 255 255
|
||||
mappingkey 0.694117665291 107 255 255 255
|
||||
mappingkey 0.698039233685 109 255 255 255
|
||||
mappingkey 0.701960802078 111 255 255 255
|
||||
mappingkey 0.705882370472 113 255 255 255
|
||||
mappingkey 0.709803938866 115 255 255 255
|
||||
mappingkey 0.713725507259 117 255 255 255
|
||||
mappingkey 0.717647075653 119 255 255 255
|
||||
mappingkey 0.721568644047 120 255 255 255
|
||||
mappingkey 0.72549021244 122 255 255 255
|
||||
mappingkey 0.729411780834 124 255 255 255
|
||||
mappingkey 0.733333349228 126 255 255 255
|
||||
mappingkey 0.737254917622 128 255 255 255
|
||||
mappingkey 0.741176486015 130 255 255 255
|
||||
mappingkey 0.745098054409 132 255 255 255
|
||||
mappingkey 0.749019622803 134 255 255 255
|
||||
mappingkey 0.752941191196 136 255 255 255
|
||||
mappingkey 0.75686275959 137 255 255 255
|
||||
mappingkey 0.760784327984 139 255 255 255
|
||||
mappingkey 0.764705896378 141 255 255 255
|
||||
mappingkey 0.768627464771 143 255 255 255
|
||||
mappingkey 0.772549033165 145 255 255 255
|
||||
mappingkey 0.776470601559 147 255 255 255
|
||||
mappingkey 0.780392169952 149 255 255 255
|
||||
mappingkey 0.784313738346 151 255 255 255
|
||||
mappingkey 0.78823530674 153 255 255 255
|
||||
mappingkey 0.792156875134 154 255 255 255
|
||||
mappingkey 0.796078443527 156 255 255 255
|
||||
mappingkey 0.800000011921 158 255 255 255
|
||||
mappingkey 0.803921580315 160 255 255 255
|
||||
mappingkey 0.807843148708 162 255 255 255
|
||||
mappingkey 0.811764717102 164 255 255 255
|
||||
mappingkey 0.815686285496 166 255 255 255
|
||||
mappingkey 0.819607853889 168 255 255 255
|
||||
mappingkey 0.823529422283 170 255 255 255
|
||||
mappingkey 0.827450990677 171 255 255 255
|
||||
mappingkey 0.831372559071 173 255 255 255
|
||||
mappingkey 0.835294127464 175 255 255 255
|
||||
mappingkey 0.839215695858 177 255 255 255
|
||||
mappingkey 0.843137264252 179 255 255 255
|
||||
mappingkey 0.847058832645 181 255 255 255
|
||||
mappingkey 0.850980401039 183 255 255 255
|
||||
mappingkey 0.854901969433 185 255 255 255
|
||||
mappingkey 0.858823537827 187 255 255 255
|
||||
mappingkey 0.86274510622 188 255 255 255
|
||||
mappingkey 0.866666674614 190 255 255 255
|
||||
mappingkey 0.870588243008 192 255 255 255
|
||||
mappingkey 0.874509811401 194 255 255 255
|
||||
mappingkey 0.878431379795 196 255 255 255
|
||||
mappingkey 0.882352948189 198 255 255 255
|
||||
mappingkey 0.886274516582 200 255 255 255
|
||||
mappingkey 0.890196084976 202 255 255 255
|
||||
mappingkey 0.89411765337 204 255 255 255
|
||||
mappingkey 0.898039221764 205 255 255 255
|
||||
mappingkey 0.901960790157 207 255 255 255
|
||||
mappingkey 0.905882358551 209 255 255 255
|
||||
mappingkey 0.909803926945 211 255 255 255
|
||||
mappingkey 0.913725495338 213 255 255 255
|
||||
mappingkey 0.917647063732 215 255 255 255
|
||||
mappingkey 0.921568632126 217 255 255 255
|
||||
mappingkey 0.92549020052 219 255 255 255
|
||||
mappingkey 0.929411768913 221 255 255 255
|
||||
mappingkey 0.933333337307 222 255 255 255
|
||||
mappingkey 0.937254905701 224 255 255 255
|
||||
mappingkey 0.941176474094 226 255 255 255
|
||||
mappingkey 0.945098042488 228 255 255 255
|
||||
mappingkey 0.949019610882 230 255 255 255
|
||||
mappingkey 0.952941179276 232 255 255 255
|
||||
mappingkey 0.956862747669 234 255 255 255
|
||||
mappingkey 0.960784316063 236 255 255 255
|
||||
mappingkey 0.964705884457 238 255 255 255
|
||||
mappingkey 0.96862745285 239 255 255 255
|
||||
mappingkey 0.972549021244 241 255 255 255
|
||||
mappingkey 0.976470589638 243 255 255 255
|
||||
mappingkey 0.980392158031 245 255 255 255
|
||||
mappingkey 0.984313726425 247 255 255 255
|
||||
mappingkey 0.988235294819 249 255 255 255
|
||||
mappingkey 0.992156863213 251 255 255 255
|
||||
mappingkey 0.996078431606 253 255 255 255
|
||||
mappingkey 1.0 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0 0 0 0 255
|
||||
mappingkey 0.00392157 0 1 1 255
|
||||
mappingkey 0.00784314 0 2 2 255
|
||||
mappingkey 0.0117647 0 4 4 255
|
||||
mappingkey 0.0156863 0 5 5 255
|
||||
mappingkey 0.0196078 0 7 7 255
|
||||
mappingkey 0.0235294 0 8 8 255
|
||||
mappingkey 0.027451 0 10 10 255
|
||||
mappingkey 0.0313726 0 11 11 255
|
||||
mappingkey 0.0352941 0 13 13 255
|
||||
mappingkey 0.0392157 0 14 14 255
|
||||
mappingkey 0.0431373 0 15 15 255
|
||||
mappingkey 0.0470588 0 17 17 255
|
||||
mappingkey 0.0509804 0 18 18 255
|
||||
mappingkey 0.054902 0 20 20 255
|
||||
mappingkey 0.0588235 0 21 21 255
|
||||
mappingkey 0.0627451 0 23 23 255
|
||||
mappingkey 0.0666667 0 24 24 255
|
||||
mappingkey 0.0705882 0 26 26 255
|
||||
mappingkey 0.0745098 0 27 27 255
|
||||
mappingkey 0.0784314 0 28 28 255
|
||||
mappingkey 0.0823529 0 30 30 255
|
||||
mappingkey 0.0862745 0 31 31 255
|
||||
mappingkey 0.0901961 0 33 33 255
|
||||
mappingkey 0.0941176 0 34 34 255
|
||||
mappingkey 0.0980392 0 36 36 255
|
||||
mappingkey 0.101961 0 37 37 255
|
||||
mappingkey 0.105882 0 39 39 255
|
||||
mappingkey 0.109804 0 40 40 255
|
||||
mappingkey 0.113725 0 42 42 255
|
||||
mappingkey 0.117647 0 43 43 255
|
||||
mappingkey 0.121569 0 44 44 255
|
||||
mappingkey 0.12549 0 46 46 255
|
||||
mappingkey 0.129412 0 47 47 255
|
||||
mappingkey 0.133333 0 49 49 255
|
||||
mappingkey 0.137255 0 50 50 255
|
||||
mappingkey 0.141176 0 52 52 255
|
||||
mappingkey 0.145098 0 53 53 255
|
||||
mappingkey 0.14902 0 55 55 255
|
||||
mappingkey 0.152941 0 56 56 255
|
||||
mappingkey 0.156863 0 57 57 255
|
||||
mappingkey 0.160784 0 59 59 255
|
||||
mappingkey 0.164706 0 60 60 255
|
||||
mappingkey 0.168627 0 62 62 255
|
||||
mappingkey 0.172549 0 63 63 255
|
||||
mappingkey 0.176471 0 65 65 255
|
||||
mappingkey 0.180392 0 66 66 255
|
||||
mappingkey 0.184314 0 68 68 255
|
||||
mappingkey 0.188235 0 69 69 255
|
||||
mappingkey 0.192157 0 70 70 255
|
||||
mappingkey 0.196078 0 72 72 255
|
||||
mappingkey 0.2 0 73 73 255
|
||||
mappingkey 0.203922 0 75 75 255
|
||||
mappingkey 0.207843 0 76 76 255
|
||||
mappingkey 0.211765 0 78 78 255
|
||||
mappingkey 0.215686 0 79 79 255
|
||||
mappingkey 0.219608 0 81 81 255
|
||||
mappingkey 0.223529 0 82 82 255
|
||||
mappingkey 0.227451 0 84 84 255
|
||||
mappingkey 0.231373 0 85 85 255
|
||||
mappingkey 0.235294 0 86 86 255
|
||||
mappingkey 0.239216 0 88 88 255
|
||||
mappingkey 0.243137 0 89 89 255
|
||||
mappingkey 0.247059 0 91 91 255
|
||||
mappingkey 0.25098 0 92 92 255
|
||||
mappingkey 0.254902 0 94 94 255
|
||||
mappingkey 0.258824 0 95 95 255
|
||||
mappingkey 0.262745 0 97 97 255
|
||||
mappingkey 0.266667 0 98 98 255
|
||||
mappingkey 0.270588 0 99 99 255
|
||||
mappingkey 0.27451 0 101 101 255
|
||||
mappingkey 0.278431 0 102 102 255
|
||||
mappingkey 0.282353 0 104 104 255
|
||||
mappingkey 0.286275 0 105 105 255
|
||||
mappingkey 0.290196 0 107 107 255
|
||||
mappingkey 0.294118 0 108 108 255
|
||||
mappingkey 0.298039 0 110 110 255
|
||||
mappingkey 0.301961 0 111 111 255
|
||||
mappingkey 0.305882 0 113 113 255
|
||||
mappingkey 0.309804 0 114 114 255
|
||||
mappingkey 0.313726 0 115 115 255
|
||||
mappingkey 0.317647 0 117 117 255
|
||||
mappingkey 0.321569 0 118 118 255
|
||||
mappingkey 0.32549 0 120 120 255
|
||||
mappingkey 0.329412 0 121 121 255
|
||||
mappingkey 0.333333 0 123 123 255
|
||||
mappingkey 0.337255 0 124 124 255
|
||||
mappingkey 0.341176 0 126 126 255
|
||||
mappingkey 0.345098 0 127 127 255
|
||||
mappingkey 0.34902 0 128 128 255
|
||||
mappingkey 0.352941 0 130 130 255
|
||||
mappingkey 0.356863 0 131 131 255
|
||||
mappingkey 0.360784 0 133 133 255
|
||||
mappingkey 0.364706 0 134 134 255
|
||||
mappingkey 0.368627 0 136 136 255
|
||||
mappingkey 0.372549 0 137 137 255
|
||||
mappingkey 0.376471 0 139 139 255
|
||||
mappingkey 0.380392 0 140 140 255
|
||||
mappingkey 0.384314 0 141 141 255
|
||||
mappingkey 0.388235 0 143 143 255
|
||||
mappingkey 0.392157 0 144 144 255
|
||||
mappingkey 0.396078 0 146 146 255
|
||||
mappingkey 0.4 0 147 147 255
|
||||
mappingkey 0.403922 0 149 149 255
|
||||
mappingkey 0.407843 0 150 150 255
|
||||
mappingkey 0.411765 0 152 152 255
|
||||
mappingkey 0.415686 0 153 153 255
|
||||
mappingkey 0.419608 0 155 155 255
|
||||
mappingkey 0.423529 0 156 156 255
|
||||
mappingkey 0.427451 0 157 157 255
|
||||
mappingkey 0.431373 0 159 159 255
|
||||
mappingkey 0.435294 0 160 160 255
|
||||
mappingkey 0.439216 0 162 162 255
|
||||
mappingkey 0.443137 0 163 163 255
|
||||
mappingkey 0.447059 0 165 165 255
|
||||
mappingkey 0.45098 0 166 166 255
|
||||
mappingkey 0.454902 0 168 168 255
|
||||
mappingkey 0.458824 0 169 169 255
|
||||
mappingkey 0.462745 0 170 170 255
|
||||
mappingkey 0.466667 0 172 172 255
|
||||
mappingkey 0.470588 0 173 173 255
|
||||
mappingkey 0.47451 1 175 175 255
|
||||
mappingkey 0.478431 3 176 176 255
|
||||
mappingkey 0.482353 5 178 178 255
|
||||
mappingkey 0.486275 7 179 179 255
|
||||
mappingkey 0.490196 9 181 181 255
|
||||
mappingkey 0.494118 11 182 182 255
|
||||
mappingkey 0.498039 13 184 184 255
|
||||
mappingkey 0.501961 15 185 185 255
|
||||
mappingkey 0.505882 17 186 186 255
|
||||
mappingkey 0.509804 18 188 188 255
|
||||
mappingkey 0.513726 20 189 189 255
|
||||
mappingkey 0.517647 22 191 191 255
|
||||
mappingkey 0.521569 24 192 192 255
|
||||
mappingkey 0.52549 26 194 194 255
|
||||
mappingkey 0.529412 28 195 195 255
|
||||
mappingkey 0.533333 30 197 197 255
|
||||
mappingkey 0.537255 32 198 198 255
|
||||
mappingkey 0.541176 34 199 199 255
|
||||
mappingkey 0.545098 35 201 201 255
|
||||
mappingkey 0.54902 37 202 202 255
|
||||
mappingkey 0.552941 39 204 204 255
|
||||
mappingkey 0.556863 41 205 205 255
|
||||
mappingkey 0.560784 43 207 207 255
|
||||
mappingkey 0.564706 45 208 208 255
|
||||
mappingkey 0.568627 47 210 210 255
|
||||
mappingkey 0.572549 49 211 211 255
|
||||
mappingkey 0.576471 51 212 212 255
|
||||
mappingkey 0.580392 52 214 214 255
|
||||
mappingkey 0.584314 54 215 215 255
|
||||
mappingkey 0.588235 56 217 217 255
|
||||
mappingkey 0.592157 58 218 218 255
|
||||
mappingkey 0.596078 60 220 220 255
|
||||
mappingkey 0.6 62 221 221 255
|
||||
mappingkey 0.603922 64 223 223 255
|
||||
mappingkey 0.607843 66 224 224 255
|
||||
mappingkey 0.611765 68 226 226 255
|
||||
mappingkey 0.615686 69 227 227 255
|
||||
mappingkey 0.619608 71 228 228 255
|
||||
mappingkey 0.623529 73 230 230 255
|
||||
mappingkey 0.627451 75 231 231 255
|
||||
mappingkey 0.631373 77 233 233 255
|
||||
mappingkey 0.635294 79 234 234 255
|
||||
mappingkey 0.639216 81 236 236 255
|
||||
mappingkey 0.643137 83 237 237 255
|
||||
mappingkey 0.647059 85 239 239 255
|
||||
mappingkey 0.65098 86 240 240 255
|
||||
mappingkey 0.654902 88 241 241 255
|
||||
mappingkey 0.658824 90 243 243 255
|
||||
mappingkey 0.662745 92 244 244 255
|
||||
mappingkey 0.666667 94 246 246 255
|
||||
mappingkey 0.670588 96 247 247 255
|
||||
mappingkey 0.67451 98 249 249 255
|
||||
mappingkey 0.678431 100 250 250 255
|
||||
mappingkey 0.682353 102 252 252 255
|
||||
mappingkey 0.686275 103 253 253 255
|
||||
mappingkey 0.690196 105 255 255 255
|
||||
mappingkey 0.694118 107 255 255 255
|
||||
mappingkey 0.698039 109 255 255 255
|
||||
mappingkey 0.701961 111 255 255 255
|
||||
mappingkey 0.705882 113 255 255 255
|
||||
mappingkey 0.709804 115 255 255 255
|
||||
mappingkey 0.713726 117 255 255 255
|
||||
mappingkey 0.717647 119 255 255 255
|
||||
mappingkey 0.721569 120 255 255 255
|
||||
mappingkey 0.72549 122 255 255 255
|
||||
mappingkey 0.729412 124 255 255 255
|
||||
mappingkey 0.733333 126 255 255 255
|
||||
mappingkey 0.737255 128 255 255 255
|
||||
mappingkey 0.741176 130 255 255 255
|
||||
mappingkey 0.745098 132 255 255 255
|
||||
mappingkey 0.74902 134 255 255 255
|
||||
mappingkey 0.752941 136 255 255 255
|
||||
mappingkey 0.756863 137 255 255 255
|
||||
mappingkey 0.760784 139 255 255 255
|
||||
mappingkey 0.764706 141 255 255 255
|
||||
mappingkey 0.768627 143 255 255 255
|
||||
mappingkey 0.772549 145 255 255 255
|
||||
mappingkey 0.776471 147 255 255 255
|
||||
mappingkey 0.780392 149 255 255 255
|
||||
mappingkey 0.784314 151 255 255 255
|
||||
mappingkey 0.788235 153 255 255 255
|
||||
mappingkey 0.792157 154 255 255 255
|
||||
mappingkey 0.796078 156 255 255 255
|
||||
mappingkey 0.8 158 255 255 255
|
||||
mappingkey 0.803922 160 255 255 255
|
||||
mappingkey 0.807843 162 255 255 255
|
||||
mappingkey 0.811765 164 255 255 255
|
||||
mappingkey 0.815686 166 255 255 255
|
||||
mappingkey 0.819608 168 255 255 255
|
||||
mappingkey 0.823529 170 255 255 255
|
||||
mappingkey 0.827451 171 255 255 255
|
||||
mappingkey 0.831373 173 255 255 255
|
||||
mappingkey 0.835294 175 255 255 255
|
||||
mappingkey 0.839216 177 255 255 255
|
||||
mappingkey 0.843137 179 255 255 255
|
||||
mappingkey 0.847059 181 255 255 255
|
||||
mappingkey 0.85098 183 255 255 255
|
||||
mappingkey 0.854902 185 255 255 255
|
||||
mappingkey 0.858824 187 255 255 255
|
||||
mappingkey 0.862745 188 255 255 255
|
||||
mappingkey 0.866667 190 255 255 255
|
||||
mappingkey 0.870588 192 255 255 255
|
||||
mappingkey 0.87451 194 255 255 255
|
||||
mappingkey 0.878431 196 255 255 255
|
||||
mappingkey 0.882353 198 255 255 255
|
||||
mappingkey 0.886275 200 255 255 255
|
||||
mappingkey 0.890196 202 255 255 255
|
||||
mappingkey 0.894118 204 255 255 255
|
||||
mappingkey 0.898039 205 255 255 255
|
||||
mappingkey 0.901961 207 255 255 255
|
||||
mappingkey 0.905882 209 255 255 255
|
||||
mappingkey 0.909804 211 255 255 255
|
||||
mappingkey 0.913725 213 255 255 255
|
||||
mappingkey 0.917647 215 255 255 255
|
||||
mappingkey 0.921569 217 255 255 255
|
||||
mappingkey 0.92549 219 255 255 255
|
||||
mappingkey 0.929412 221 255 255 255
|
||||
mappingkey 0.933333 222 255 255 255
|
||||
mappingkey 0.937255 224 255 255 255
|
||||
mappingkey 0.941176 226 255 255 255
|
||||
mappingkey 0.945098 228 255 255 255
|
||||
mappingkey 0.94902 230 255 255 255
|
||||
mappingkey 0.952941 232 255 255 255
|
||||
mappingkey 0.956863 234 255 255 255
|
||||
mappingkey 0.960784 236 255 255 255
|
||||
mappingkey 0.964706 238 255 255 255
|
||||
mappingkey 0.968627 239 255 255 255
|
||||
mappingkey 0.972549 241 255 255 255
|
||||
mappingkey 0.976471 243 255 255 255
|
||||
mappingkey 0.980392 245 255 255 255
|
||||
mappingkey 0.984314 247 255 255 255
|
||||
mappingkey 0.988235 249 255 255 255
|
||||
mappingkey 0.992157 251 255 255 255
|
||||
mappingkey 0.996078 253 255 255 255
|
||||
mappingkey 1 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0 0 0 0 255
|
||||
mappingkey 0.00392157 10 10 0 255
|
||||
mappingkey 0.00784314 14 14 0 255
|
||||
mappingkey 0.0117647 18 18 0 255
|
||||
mappingkey 0.0156863 20 20 0 255
|
||||
mappingkey 0.0196078 23 23 0 255
|
||||
mappingkey 0.0235294 26 26 0 255
|
||||
mappingkey 0.027451 28 28 0 255
|
||||
mappingkey 0.0313726 30 30 0 255
|
||||
mappingkey 0.0352941 31 31 0 255
|
||||
mappingkey 0.0392157 33 33 0 255
|
||||
mappingkey 0.0431373 34 34 0 255
|
||||
mappingkey 0.0470588 36 36 0 255
|
||||
mappingkey 0.0509804 38 38 0 255
|
||||
mappingkey 0.054902 39 39 0 255
|
||||
mappingkey 0.0588235 40 40 0 255
|
||||
mappingkey 0.0627451 42 42 1 255
|
||||
mappingkey 0.0666667 43 43 1 255
|
||||
mappingkey 0.0705882 45 45 1 255
|
||||
mappingkey 0.0745098 46 46 1 255
|
||||
mappingkey 0.0784314 47 47 1 255
|
||||
mappingkey 0.0823529 49 49 1 255
|
||||
mappingkey 0.0862745 49 49 1 255
|
||||
mappingkey 0.0901961 51 51 2 255
|
||||
mappingkey 0.0941176 52 52 2 255
|
||||
mappingkey 0.0980392 53 53 2 255
|
||||
mappingkey 0.101961 54 54 2 255
|
||||
mappingkey 0.105882 55 55 2 255
|
||||
mappingkey 0.109804 57 57 3 255
|
||||
mappingkey 0.113725 57 57 3 255
|
||||
mappingkey 0.117647 59 59 3 255
|
||||
mappingkey 0.121569 59 59 3 255
|
||||
mappingkey 0.12549 61 61 4 255
|
||||
mappingkey 0.129412 62 62 4 255
|
||||
mappingkey 0.133333 63 63 4 255
|
||||
mappingkey 0.137255 64 64 4 255
|
||||
mappingkey 0.141176 65 65 5 255
|
||||
mappingkey 0.145098 66 66 5 255
|
||||
mappingkey 0.14902 67 67 5 255
|
||||
mappingkey 0.152941 67 67 5 255
|
||||
mappingkey 0.156863 68 68 6 255
|
||||
mappingkey 0.160784 70 70 6 255
|
||||
mappingkey 0.164706 70 70 6 255
|
||||
mappingkey 0.168627 71 71 7 255
|
||||
mappingkey 0.172549 72 72 7 255
|
||||
mappingkey 0.176471 73 73 7 255
|
||||
mappingkey 0.180392 74 74 8 255
|
||||
mappingkey 0.184314 75 75 8 255
|
||||
mappingkey 0.188235 76 76 9 255
|
||||
mappingkey 0.192157 77 77 9 255
|
||||
mappingkey 0.196078 77 77 9 255
|
||||
mappingkey 0.2 79 79 10 255
|
||||
mappingkey 0.203922 80 80 10 255
|
||||
mappingkey 0.207843 81 81 11 255
|
||||
mappingkey 0.211765 81 81 11 255
|
||||
mappingkey 0.215686 82 82 11 255
|
||||
mappingkey 0.219608 83 83 12 255
|
||||
mappingkey 0.223529 84 84 12 255
|
||||
mappingkey 0.227451 85 85 13 255
|
||||
mappingkey 0.231373 85 85 13 255
|
||||
mappingkey 0.235294 86 86 14 255
|
||||
mappingkey 0.239216 87 87 14 255
|
||||
mappingkey 0.243137 88 88 15 255
|
||||
mappingkey 0.247059 89 89 15 255
|
||||
mappingkey 0.25098 90 90 16 255
|
||||
mappingkey 0.254902 90 90 16 255
|
||||
mappingkey 0.258824 91 91 17 255
|
||||
mappingkey 0.262745 92 92 17 255
|
||||
mappingkey 0.266667 93 93 18 255
|
||||
mappingkey 0.270588 94 94 18 255
|
||||
mappingkey 0.27451 95 95 19 255
|
||||
mappingkey 0.278431 95 95 19 255
|
||||
mappingkey 0.282353 96 96 20 255
|
||||
mappingkey 0.286275 97 97 20 255
|
||||
mappingkey 0.290196 98 98 21 255
|
||||
mappingkey 0.294118 99 99 22 255
|
||||
mappingkey 0.298039 100 100 22 255
|
||||
mappingkey 0.301961 101 101 23 255
|
||||
mappingkey 0.305882 101 101 23 255
|
||||
mappingkey 0.309804 102 102 24 255
|
||||
mappingkey 0.313726 103 103 25 255
|
||||
mappingkey 0.317647 103 103 25 255
|
||||
mappingkey 0.321569 104 104 26 255
|
||||
mappingkey 0.32549 105 105 27 255
|
||||
mappingkey 0.329412 106 106 27 255
|
||||
mappingkey 0.333333 107 107 28 255
|
||||
mappingkey 0.337255 108 108 29 255
|
||||
mappingkey 0.341176 108 108 29 255
|
||||
mappingkey 0.345098 109 109 30 255
|
||||
mappingkey 0.34902 110 110 31 255
|
||||
mappingkey 0.352941 111 111 31 255
|
||||
mappingkey 0.356863 112 112 32 255
|
||||
mappingkey 0.360784 113 113 33 255
|
||||
mappingkey 0.364706 113 113 33 255
|
||||
mappingkey 0.368627 114 114 34 255
|
||||
mappingkey 0.372549 115 115 35 255
|
||||
mappingkey 0.376471 116 116 36 255
|
||||
mappingkey 0.380392 116 116 36 255
|
||||
mappingkey 0.384314 117 117 37 255
|
||||
mappingkey 0.388235 118 118 38 255
|
||||
mappingkey 0.392157 119 119 39 255
|
||||
mappingkey 0.396078 120 120 40 255
|
||||
mappingkey 0.4 120 120 40 255
|
||||
mappingkey 0.403922 121 121 41 255
|
||||
mappingkey 0.407843 122 122 42 255
|
||||
mappingkey 0.411765 123 123 43 255
|
||||
mappingkey 0.415686 124 124 44 255
|
||||
mappingkey 0.419608 124 124 44 255
|
||||
mappingkey 0.423529 125 125 45 255
|
||||
mappingkey 0.427451 126 126 46 255
|
||||
mappingkey 0.431373 127 127 47 255
|
||||
mappingkey 0.435294 128 128 48 255
|
||||
mappingkey 0.439216 128 128 49 255
|
||||
mappingkey 0.443137 129 129 50 255
|
||||
mappingkey 0.447059 130 130 50 255
|
||||
mappingkey 0.45098 131 131 51 255
|
||||
mappingkey 0.454902 131 131 52 255
|
||||
mappingkey 0.458824 132 132 53 255
|
||||
mappingkey 0.462745 133 133 54 255
|
||||
mappingkey 0.466667 134 134 55 255
|
||||
mappingkey 0.470588 134 134 56 255
|
||||
mappingkey 0.47451 135 135 57 255
|
||||
mappingkey 0.478431 136 136 58 255
|
||||
mappingkey 0.482353 137 137 59 255
|
||||
mappingkey 0.486275 138 138 60 255
|
||||
mappingkey 0.490196 139 139 61 255
|
||||
mappingkey 0.494118 140 140 62 255
|
||||
mappingkey 0.498039 140 140 63 255
|
||||
mappingkey 0.501961 141 141 64 255
|
||||
mappingkey 0.505882 142 142 65 255
|
||||
mappingkey 0.509804 143 143 66 255
|
||||
mappingkey 0.513726 143 143 67 255
|
||||
mappingkey 0.517647 144 144 68 255
|
||||
mappingkey 0.521569 145 145 69 255
|
||||
mappingkey 0.52549 146 146 70 255
|
||||
mappingkey 0.529412 147 147 71 255
|
||||
mappingkey 0.533333 148 148 72 255
|
||||
mappingkey 0.537255 148 148 73 255
|
||||
mappingkey 0.541176 149 149 74 255
|
||||
mappingkey 0.545098 150 150 75 255
|
||||
mappingkey 0.54902 150 150 76 255
|
||||
mappingkey 0.552941 151 151 77 255
|
||||
mappingkey 0.556863 153 153 79 255
|
||||
mappingkey 0.560784 153 153 80 255
|
||||
mappingkey 0.564706 154 154 81 255
|
||||
mappingkey 0.568627 155 155 82 255
|
||||
mappingkey 0.572549 155 155 83 255
|
||||
mappingkey 0.576471 156 156 84 255
|
||||
mappingkey 0.580392 157 157 85 255
|
||||
mappingkey 0.584314 158 158 87 255
|
||||
mappingkey 0.588235 159 159 88 255
|
||||
mappingkey 0.592157 160 160 89 255
|
||||
mappingkey 0.596078 160 160 90 255
|
||||
mappingkey 0.6 161 161 91 255
|
||||
mappingkey 0.603922 163 163 93 255
|
||||
mappingkey 0.607843 163 163 94 255
|
||||
mappingkey 0.611765 164 164 95 255
|
||||
mappingkey 0.615686 165 165 96 255
|
||||
mappingkey 0.619608 165 165 97 255
|
||||
mappingkey 0.623529 167 167 99 255
|
||||
mappingkey 0.627451 167 167 100 255
|
||||
mappingkey 0.631373 168 168 101 255
|
||||
mappingkey 0.635294 169 169 102 255
|
||||
mappingkey 0.639216 170 170 104 255
|
||||
mappingkey 0.643137 171 171 105 255
|
||||
mappingkey 0.647059 172 172 106 255
|
||||
mappingkey 0.65098 172 172 108 255
|
||||
mappingkey 0.654902 173 173 109 255
|
||||
mappingkey 0.658824 174 174 110 255
|
||||
mappingkey 0.662745 175 175 112 255
|
||||
mappingkey 0.666667 176 176 113 255
|
||||
mappingkey 0.670588 176 176 114 255
|
||||
mappingkey 0.67451 178 178 116 255
|
||||
mappingkey 0.678431 179 179 117 255
|
||||
mappingkey 0.682353 179 179 118 255
|
||||
mappingkey 0.686275 180 180 120 255
|
||||
mappingkey 0.690196 181 181 121 255
|
||||
mappingkey 0.694118 182 182 122 255
|
||||
mappingkey 0.698039 183 183 124 255
|
||||
mappingkey 0.701961 183 183 125 255
|
||||
mappingkey 0.705882 185 185 127 255
|
||||
mappingkey 0.709804 185 185 128 255
|
||||
mappingkey 0.713726 186 186 129 255
|
||||
mappingkey 0.717647 187 187 131 255
|
||||
mappingkey 0.721569 188 188 132 255
|
||||
mappingkey 0.72549 189 189 134 255
|
||||
mappingkey 0.729412 189 189 135 255
|
||||
mappingkey 0.733333 191 191 137 255
|
||||
mappingkey 0.737255 191 191 138 255
|
||||
mappingkey 0.741176 192 192 140 255
|
||||
mappingkey 0.745098 193 193 141 255
|
||||
mappingkey 0.74902 194 194 143 255
|
||||
mappingkey 0.752941 195 195 144 255
|
||||
mappingkey 0.756863 196 196 146 255
|
||||
mappingkey 0.760784 197 197 147 255
|
||||
mappingkey 0.764706 197 197 149 255
|
||||
mappingkey 0.768627 198 198 150 255
|
||||
mappingkey 0.772549 200 200 152 255
|
||||
mappingkey 0.776471 200 200 153 255
|
||||
mappingkey 0.780392 201 201 155 255
|
||||
mappingkey 0.784314 202 202 156 255
|
||||
mappingkey 0.788235 203 203 158 255
|
||||
mappingkey 0.792157 204 204 160 255
|
||||
mappingkey 0.796078 205 205 161 255
|
||||
mappingkey 0.8 206 206 163 255
|
||||
mappingkey 0.803922 206 206 164 255
|
||||
mappingkey 0.807843 208 208 166 255
|
||||
mappingkey 0.811765 208 208 168 255
|
||||
mappingkey 0.815686 209 209 169 255
|
||||
mappingkey 0.819608 210 210 171 255
|
||||
mappingkey 0.823529 211 211 172 255
|
||||
mappingkey 0.827451 212 212 174 255
|
||||
mappingkey 0.831373 213 213 176 255
|
||||
mappingkey 0.835294 214 214 177 255
|
||||
mappingkey 0.839216 215 215 179 255
|
||||
mappingkey 0.843137 216 216 181 255
|
||||
mappingkey 0.847059 216 216 182 255
|
||||
mappingkey 0.85098 218 218 184 255
|
||||
mappingkey 0.854902 218 218 186 255
|
||||
mappingkey 0.858824 220 220 188 255
|
||||
mappingkey 0.862745 220 220 189 255
|
||||
mappingkey 0.866667 221 221 191 255
|
||||
mappingkey 0.870588 222 222 193 255
|
||||
mappingkey 0.87451 223 223 195 255
|
||||
mappingkey 0.878431 224 224 196 255
|
||||
mappingkey 0.882353 225 225 198 255
|
||||
mappingkey 0.886275 226 226 200 255
|
||||
mappingkey 0.890196 227 227 202 255
|
||||
mappingkey 0.894118 228 228 203 255
|
||||
mappingkey 0.898039 229 229 205 255
|
||||
mappingkey 0.901961 230 230 207 255
|
||||
mappingkey 0.905882 231 231 209 255
|
||||
mappingkey 0.909804 232 232 211 255
|
||||
mappingkey 0.913725 232 232 212 255
|
||||
mappingkey 0.917647 234 234 214 255
|
||||
mappingkey 0.921569 234 234 216 255
|
||||
mappingkey 0.92549 236 236 218 255
|
||||
mappingkey 0.929412 236 236 220 255
|
||||
mappingkey 0.933333 238 238 222 255
|
||||
mappingkey 0.937255 238 238 224 255
|
||||
mappingkey 0.941176 239 239 225 255
|
||||
mappingkey 0.945098 240 240 227 255
|
||||
mappingkey 0.94902 241 241 229 255
|
||||
mappingkey 0.952941 242 242 231 255
|
||||
mappingkey 0.956863 243 243 233 255
|
||||
mappingkey 0.960784 244 244 235 255
|
||||
mappingkey 0.964706 245 245 237 255
|
||||
mappingkey 0.968627 246 246 239 255
|
||||
mappingkey 0.972549 247 247 241 255
|
||||
mappingkey 0.976471 248 248 243 255
|
||||
mappingkey 0.980392 249 249 245 255
|
||||
mappingkey 0.984314 250 250 247 255
|
||||
mappingkey 0.988235 251 251 249 255
|
||||
mappingkey 0.992157 252 252 251 255
|
||||
mappingkey 0.996078 253 253 253 255
|
||||
mappingkey 1 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0 0 0 0 255
|
||||
mappingkey 0.00392157 15 1 1 255
|
||||
mappingkey 0.00784314 22 2 2 255
|
||||
mappingkey 0.0117647 27 3 3 255
|
||||
mappingkey 0.0156863 31 4 4 255
|
||||
mappingkey 0.0196078 35 5 5 255
|
||||
mappingkey 0.0235294 39 6 6 255
|
||||
mappingkey 0.027451 42 7 7 255
|
||||
mappingkey 0.0313726 45 8 8 255
|
||||
mappingkey 0.0352941 47 9 9 255
|
||||
mappingkey 0.0392157 50 10 10 255
|
||||
mappingkey 0.0431373 52 11 11 255
|
||||
mappingkey 0.0470588 55 12 12 255
|
||||
mappingkey 0.0509804 57 13 13 255
|
||||
mappingkey 0.054902 59 14 14 255
|
||||
mappingkey 0.0588235 61 15 15 255
|
||||
mappingkey 0.0627451 63 16 16 255
|
||||
mappingkey 0.0666667 65 17 17 255
|
||||
mappingkey 0.0705882 67 18 18 255
|
||||
mappingkey 0.0745098 69 19 19 255
|
||||
mappingkey 0.0784314 71 20 20 255
|
||||
mappingkey 0.0823529 73 21 21 255
|
||||
mappingkey 0.0862745 74 22 22 255
|
||||
mappingkey 0.0901961 76 23 23 255
|
||||
mappingkey 0.0941176 78 24 24 255
|
||||
mappingkey 0.0980392 79 25 25 255
|
||||
mappingkey 0.101961 81 26 26 255
|
||||
mappingkey 0.105882 82 27 27 255
|
||||
mappingkey 0.109804 84 28 28 255
|
||||
mappingkey 0.113725 85 29 29 255
|
||||
mappingkey 0.117647 87 30 30 255
|
||||
mappingkey 0.121569 88 31 31 255
|
||||
mappingkey 0.12549 90 32 32 255
|
||||
mappingkey 0.129412 91 33 33 255
|
||||
mappingkey 0.133333 93 34 34 255
|
||||
mappingkey 0.137255 94 35 35 255
|
||||
mappingkey 0.141176 95 36 36 255
|
||||
mappingkey 0.145098 97 37 37 255
|
||||
mappingkey 0.14902 98 38 38 255
|
||||
mappingkey 0.152941 99 39 39 255
|
||||
mappingkey 0.156863 100 40 40 255
|
||||
mappingkey 0.160784 102 41 41 255
|
||||
mappingkey 0.164706 103 42 42 255
|
||||
mappingkey 0.168627 104 43 43 255
|
||||
mappingkey 0.172549 105 44 44 255
|
||||
mappingkey 0.176471 107 45 45 255
|
||||
mappingkey 0.180392 108 46 46 255
|
||||
mappingkey 0.184314 109 47 47 255
|
||||
mappingkey 0.188235 110 48 48 255
|
||||
mappingkey 0.192157 111 49 49 255
|
||||
mappingkey 0.196078 112 50 50 255
|
||||
mappingkey 0.2 114 51 51 255
|
||||
mappingkey 0.203922 115 52 52 255
|
||||
mappingkey 0.207843 116 53 53 255
|
||||
mappingkey 0.211765 117 54 54 255
|
||||
mappingkey 0.215686 118 55 55 255
|
||||
mappingkey 0.219608 119 56 56 255
|
||||
mappingkey 0.223529 120 57 57 255
|
||||
mappingkey 0.227451 121 58 58 255
|
||||
mappingkey 0.231373 122 59 59 255
|
||||
mappingkey 0.235294 123 60 60 255
|
||||
mappingkey 0.239216 124 61 61 255
|
||||
mappingkey 0.243137 125 62 62 255
|
||||
mappingkey 0.247059 126 63 63 255
|
||||
mappingkey 0.25098 127 64 64 255
|
||||
mappingkey 0.254902 128 65 65 255
|
||||
mappingkey 0.258824 129 66 66 255
|
||||
mappingkey 0.262745 130 67 67 255
|
||||
mappingkey 0.266667 131 68 68 255
|
||||
mappingkey 0.270588 132 69 69 255
|
||||
mappingkey 0.27451 133 70 70 255
|
||||
mappingkey 0.278431 134 71 71 255
|
||||
mappingkey 0.282353 135 72 72 255
|
||||
mappingkey 0.286275 136 73 73 255
|
||||
mappingkey 0.290196 137 74 74 255
|
||||
mappingkey 0.294118 138 75 75 255
|
||||
mappingkey 0.298039 139 76 76 255
|
||||
mappingkey 0.301961 140 77 77 255
|
||||
mappingkey 0.305882 141 78 78 255
|
||||
mappingkey 0.309804 141 79 79 255
|
||||
mappingkey 0.313726 142 80 80 255
|
||||
mappingkey 0.317647 143 81 81 255
|
||||
mappingkey 0.321569 144 82 82 255
|
||||
mappingkey 0.32549 145 83 83 255
|
||||
mappingkey 0.329412 146 84 84 255
|
||||
mappingkey 0.333333 147 85 85 255
|
||||
mappingkey 0.337255 148 86 86 255
|
||||
mappingkey 0.341176 148 87 87 255
|
||||
mappingkey 0.345098 149 88 88 255
|
||||
mappingkey 0.34902 150 89 89 255
|
||||
mappingkey 0.352941 151 90 90 255
|
||||
mappingkey 0.356863 152 91 91 255
|
||||
mappingkey 0.360784 153 92 92 255
|
||||
mappingkey 0.364706 153 93 93 255
|
||||
mappingkey 0.368627 154 94 94 255
|
||||
mappingkey 0.372549 155 95 95 255
|
||||
mappingkey 0.376471 156 96 96 255
|
||||
mappingkey 0.380392 157 97 97 255
|
||||
mappingkey 0.384314 158 98 98 255
|
||||
mappingkey 0.388235 158 99 99 255
|
||||
mappingkey 0.392157 159 100 100 255
|
||||
mappingkey 0.396078 160 101 101 255
|
||||
mappingkey 0.4 161 102 102 255
|
||||
mappingkey 0.403922 162 103 103 255
|
||||
mappingkey 0.407843 162 104 104 255
|
||||
mappingkey 0.411765 163 105 105 255
|
||||
mappingkey 0.415686 164 106 106 255
|
||||
mappingkey 0.419608 165 107 107 255
|
||||
mappingkey 0.423529 165 108 108 255
|
||||
mappingkey 0.427451 166 109 109 255
|
||||
mappingkey 0.431373 167 110 110 255
|
||||
mappingkey 0.435294 168 111 111 255
|
||||
mappingkey 0.439216 168 112 112 255
|
||||
mappingkey 0.443137 169 113 113 255
|
||||
mappingkey 0.447059 170 114 114 255
|
||||
mappingkey 0.45098 171 115 115 255
|
||||
mappingkey 0.454902 171 116 116 255
|
||||
mappingkey 0.458824 172 117 117 255
|
||||
mappingkey 0.462745 173 118 118 255
|
||||
mappingkey 0.466667 174 119 119 255
|
||||
mappingkey 0.470588 174 120 120 255
|
||||
mappingkey 0.47451 175 121 121 255
|
||||
mappingkey 0.478431 176 122 122 255
|
||||
mappingkey 0.482353 177 123 123 255
|
||||
mappingkey 0.486275 177 124 124 255
|
||||
mappingkey 0.490196 178 125 125 255
|
||||
mappingkey 0.494118 179 126 126 255
|
||||
mappingkey 0.498039 179 127 127 255
|
||||
mappingkey 0.501961 180 128 128 255
|
||||
mappingkey 0.505882 181 129 129 255
|
||||
mappingkey 0.509804 182 130 130 255
|
||||
mappingkey 0.513726 182 131 131 255
|
||||
mappingkey 0.517647 183 132 132 255
|
||||
mappingkey 0.521569 184 133 133 255
|
||||
mappingkey 0.52549 184 134 134 255
|
||||
mappingkey 0.529412 185 135 135 255
|
||||
mappingkey 0.533333 186 136 136 255
|
||||
mappingkey 0.537255 186 137 137 255
|
||||
mappingkey 0.541176 187 138 138 255
|
||||
mappingkey 0.545098 188 139 139 255
|
||||
mappingkey 0.54902 188 140 140 255
|
||||
mappingkey 0.552941 189 141 141 255
|
||||
mappingkey 0.556863 190 142 142 255
|
||||
mappingkey 0.560784 190 143 143 255
|
||||
mappingkey 0.564706 191 144 144 255
|
||||
mappingkey 0.568627 192 145 145 255
|
||||
mappingkey 0.572549 192 146 146 255
|
||||
mappingkey 0.576471 193 147 147 255
|
||||
mappingkey 0.580392 194 148 148 255
|
||||
mappingkey 0.584314 194 149 149 255
|
||||
mappingkey 0.588235 195 150 150 255
|
||||
mappingkey 0.592157 196 151 151 255
|
||||
mappingkey 0.596078 196 152 152 255
|
||||
mappingkey 0.6 197 153 153 255
|
||||
mappingkey 0.603922 198 154 154 255
|
||||
mappingkey 0.607843 198 155 155 255
|
||||
mappingkey 0.611765 199 156 156 255
|
||||
mappingkey 0.615686 200 157 157 255
|
||||
mappingkey 0.619608 200 158 158 255
|
||||
mappingkey 0.623529 201 159 159 255
|
||||
mappingkey 0.627451 201 160 160 255
|
||||
mappingkey 0.631373 202 161 161 255
|
||||
mappingkey 0.635294 203 162 162 255
|
||||
mappingkey 0.639216 203 163 163 255
|
||||
mappingkey 0.643137 204 164 164 255
|
||||
mappingkey 0.647059 205 165 165 255
|
||||
mappingkey 0.65098 205 166 166 255
|
||||
mappingkey 0.654902 206 167 167 255
|
||||
mappingkey 0.658824 206 168 168 255
|
||||
mappingkey 0.662745 207 169 169 255
|
||||
mappingkey 0.666667 208 170 170 255
|
||||
mappingkey 0.670588 208 171 171 255
|
||||
mappingkey 0.67451 209 172 172 255
|
||||
mappingkey 0.678431 210 173 173 255
|
||||
mappingkey 0.682353 210 174 174 255
|
||||
mappingkey 0.686275 211 175 175 255
|
||||
mappingkey 0.690196 211 176 176 255
|
||||
mappingkey 0.694118 212 177 177 255
|
||||
mappingkey 0.698039 213 178 178 255
|
||||
mappingkey 0.701961 213 179 179 255
|
||||
mappingkey 0.705882 214 180 180 255
|
||||
mappingkey 0.709804 214 181 181 255
|
||||
mappingkey 0.713726 215 182 182 255
|
||||
mappingkey 0.717647 216 183 183 255
|
||||
mappingkey 0.721569 216 184 184 255
|
||||
mappingkey 0.72549 217 185 185 255
|
||||
mappingkey 0.729412 217 186 186 255
|
||||
mappingkey 0.733333 218 187 187 255
|
||||
mappingkey 0.737255 218 188 188 255
|
||||
mappingkey 0.741176 219 189 189 255
|
||||
mappingkey 0.745098 220 190 190 255
|
||||
mappingkey 0.74902 220 191 191 255
|
||||
mappingkey 0.752941 221 192 192 255
|
||||
mappingkey 0.756863 221 193 193 255
|
||||
mappingkey 0.760784 222 194 194 255
|
||||
mappingkey 0.764706 222 195 195 255
|
||||
mappingkey 0.768627 223 196 196 255
|
||||
mappingkey 0.772549 224 197 197 255
|
||||
mappingkey 0.776471 224 198 198 255
|
||||
mappingkey 0.780392 225 199 199 255
|
||||
mappingkey 0.784314 225 200 200 255
|
||||
mappingkey 0.788235 226 201 201 255
|
||||
mappingkey 0.792157 226 202 202 255
|
||||
mappingkey 0.796078 227 203 203 255
|
||||
mappingkey 0.8 228 204 204 255
|
||||
mappingkey 0.803922 228 205 205 255
|
||||
mappingkey 0.807843 229 206 206 255
|
||||
mappingkey 0.811765 229 207 207 255
|
||||
mappingkey 0.815686 230 208 208 255
|
||||
mappingkey 0.819608 230 209 209 255
|
||||
mappingkey 0.823529 231 210 210 255
|
||||
mappingkey 0.827451 231 211 211 255
|
||||
mappingkey 0.831373 232 212 212 255
|
||||
mappingkey 0.835294 233 213 213 255
|
||||
mappingkey 0.839216 233 214 214 255
|
||||
mappingkey 0.843137 234 215 215 255
|
||||
mappingkey 0.847059 234 216 216 255
|
||||
mappingkey 0.85098 235 217 217 255
|
||||
mappingkey 0.854902 235 218 218 255
|
||||
mappingkey 0.858824 236 219 219 255
|
||||
mappingkey 0.862745 236 220 220 255
|
||||
mappingkey 0.866667 237 221 221 255
|
||||
mappingkey 0.870588 237 222 222 255
|
||||
mappingkey 0.87451 238 223 223 255
|
||||
mappingkey 0.878431 238 224 224 255
|
||||
mappingkey 0.882353 239 225 225 255
|
||||
mappingkey 0.886275 240 226 226 255
|
||||
mappingkey 0.890196 240 227 227 255
|
||||
mappingkey 0.894118 241 228 228 255
|
||||
mappingkey 0.898039 241 229 229 255
|
||||
mappingkey 0.901961 242 230 230 255
|
||||
mappingkey 0.905882 242 231 231 255
|
||||
mappingkey 0.909804 243 232 232 255
|
||||
mappingkey 0.913725 243 233 233 255
|
||||
mappingkey 0.917647 244 234 234 255
|
||||
mappingkey 0.921569 244 235 235 255
|
||||
mappingkey 0.92549 245 236 236 255
|
||||
mappingkey 0.929412 245 237 237 255
|
||||
mappingkey 0.933333 246 238 238 255
|
||||
mappingkey 0.937255 246 239 239 255
|
||||
mappingkey 0.941176 247 240 240 255
|
||||
mappingkey 0.945098 247 241 241 255
|
||||
mappingkey 0.94902 248 242 242 255
|
||||
mappingkey 0.952941 248 243 243 255
|
||||
mappingkey 0.956863 249 244 244 255
|
||||
mappingkey 0.960784 249 245 245 255
|
||||
mappingkey 0.964706 250 246 246 255
|
||||
mappingkey 0.968627 250 247 247 255
|
||||
mappingkey 0.972549 251 248 248 255
|
||||
mappingkey 0.976471 251 249 249 255
|
||||
mappingkey 0.980392 252 250 250 255
|
||||
mappingkey 0.984314 252 251 251 255
|
||||
mappingkey 0.988235 253 252 252 255
|
||||
mappingkey 0.992157 253 253 253 255
|
||||
mappingkey 0.996078 254 254 254 255
|
||||
mappingkey 1 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0.0 0 0 0 255
|
||||
mappingkey 0.00392156885937 1 1 0 255
|
||||
mappingkey 0.00784313771874 2 2 0 255
|
||||
mappingkey 0.0117647061124 4 3 0 255
|
||||
mappingkey 0.0156862754375 5 4 0 255
|
||||
mappingkey 0.0196078438312 7 5 0 255
|
||||
mappingkey 0.0235294122249 8 6 0 255
|
||||
mappingkey 0.0274509806186 10 7 0 255
|
||||
mappingkey 0.0313725508749 11 8 0 255
|
||||
mappingkey 0.0352941192687 13 9 0 255
|
||||
mappingkey 0.0392156876624 14 10 0 255
|
||||
mappingkey 0.0431372560561 15 11 0 255
|
||||
mappingkey 0.0470588244498 17 12 0 255
|
||||
mappingkey 0.0509803928435 18 13 0 255
|
||||
mappingkey 0.0549019612372 20 14 0 255
|
||||
mappingkey 0.0588235296309 21 15 0 255
|
||||
mappingkey 0.0627451017499 23 16 0 255
|
||||
mappingkey 0.0666666701436 24 17 0 255
|
||||
mappingkey 0.0705882385373 26 18 0 255
|
||||
mappingkey 0.074509806931 27 19 0 255
|
||||
mappingkey 0.0784313753247 28 20 0 255
|
||||
mappingkey 0.0823529437184 30 21 0 255
|
||||
mappingkey 0.0862745121121 31 22 0 255
|
||||
mappingkey 0.0901960805058 33 23 0 255
|
||||
mappingkey 0.0941176488996 34 24 0 255
|
||||
mappingkey 0.0980392172933 36 25 0 255
|
||||
mappingkey 0.101960785687 37 26 0 255
|
||||
mappingkey 0.105882354081 39 27 0 255
|
||||
mappingkey 0.109803922474 40 28 0 255
|
||||
mappingkey 0.113725490868 42 29 0 255
|
||||
mappingkey 0.117647059262 43 30 0 255
|
||||
mappingkey 0.121568627656 44 31 0 255
|
||||
mappingkey 0.1254902035 46 32 0 255
|
||||
mappingkey 0.129411771894 47 33 0 255
|
||||
mappingkey 0.133333340287 49 34 0 255
|
||||
mappingkey 0.137254908681 50 35 0 255
|
||||
mappingkey 0.141176477075 52 36 0 255
|
||||
mappingkey 0.145098045468 53 37 0 255
|
||||
mappingkey 0.149019613862 55 38 0 255
|
||||
mappingkey 0.152941182256 56 39 0 255
|
||||
mappingkey 0.156862750649 57 40 0 255
|
||||
mappingkey 0.160784319043 59 41 0 255
|
||||
mappingkey 0.164705887437 60 42 0 255
|
||||
mappingkey 0.168627455831 62 43 0 255
|
||||
mappingkey 0.172549024224 63 44 0 255
|
||||
mappingkey 0.176470592618 65 45 0 255
|
||||
mappingkey 0.180392161012 66 46 0 255
|
||||
mappingkey 0.184313729405 68 47 0 255
|
||||
mappingkey 0.188235297799 69 48 0 255
|
||||
mappingkey 0.192156866193 70 49 0 255
|
||||
mappingkey 0.196078434587 72 50 0 255
|
||||
mappingkey 0.20000000298 73 51 0 255
|
||||
mappingkey 0.203921571374 75 52 0 255
|
||||
mappingkey 0.207843139768 76 53 0 255
|
||||
mappingkey 0.211764708161 78 54 0 255
|
||||
mappingkey 0.215686276555 79 55 0 255
|
||||
mappingkey 0.219607844949 81 56 0 255
|
||||
mappingkey 0.223529413342 82 57 0 255
|
||||
mappingkey 0.227450981736 84 58 0 255
|
||||
mappingkey 0.23137255013 85 59 0 255
|
||||
mappingkey 0.235294118524 86 60 0 255
|
||||
mappingkey 0.239215686917 88 61 0 255
|
||||
mappingkey 0.243137255311 89 62 0 255
|
||||
mappingkey 0.247058823705 91 63 0 255
|
||||
mappingkey 0.250980407 92 64 0 255
|
||||
mappingkey 0.254901975393 94 65 0 255
|
||||
mappingkey 0.258823543787 95 66 0 255
|
||||
mappingkey 0.262745112181 97 67 0 255
|
||||
mappingkey 0.266666680574 98 68 0 255
|
||||
mappingkey 0.270588248968 99 69 0 255
|
||||
mappingkey 0.274509817362 101 70 0 255
|
||||
mappingkey 0.278431385756 102 71 0 255
|
||||
mappingkey 0.282352954149 104 72 0 255
|
||||
mappingkey 0.286274522543 105 73 0 255
|
||||
mappingkey 0.290196090937 107 74 0 255
|
||||
mappingkey 0.29411765933 108 75 0 255
|
||||
mappingkey 0.298039227724 110 76 0 255
|
||||
mappingkey 0.301960796118 111 77 0 255
|
||||
mappingkey 0.305882364511 113 78 0 255
|
||||
mappingkey 0.309803932905 114 79 0 255
|
||||
mappingkey 0.313725501299 115 80 0 255
|
||||
mappingkey 0.317647069693 117 81 0 255
|
||||
mappingkey 0.321568638086 118 82 0 255
|
||||
mappingkey 0.32549020648 120 83 0 255
|
||||
mappingkey 0.329411774874 121 84 0 255
|
||||
mappingkey 0.333333343267 123 85 0 255
|
||||
mappingkey 0.337254911661 124 86 0 255
|
||||
mappingkey 0.341176480055 126 87 0 255
|
||||
mappingkey 0.345098048449 127 88 0 255
|
||||
mappingkey 0.349019616842 128 89 0 255
|
||||
mappingkey 0.352941185236 130 90 0 255
|
||||
mappingkey 0.35686275363 131 91 0 255
|
||||
mappingkey 0.360784322023 133 92 0 255
|
||||
mappingkey 0.364705890417 134 93 0 255
|
||||
mappingkey 0.368627458811 136 94 0 255
|
||||
mappingkey 0.372549027205 137 95 0 255
|
||||
mappingkey 0.376470595598 139 96 0 255
|
||||
mappingkey 0.380392163992 140 97 0 255
|
||||
mappingkey 0.384313732386 141 98 0 255
|
||||
mappingkey 0.388235300779 143 99 0 255
|
||||
mappingkey 0.392156869173 144 100 0 255
|
||||
mappingkey 0.396078437567 146 101 0 255
|
||||
mappingkey 0.40000000596 147 102 0 255
|
||||
mappingkey 0.403921574354 149 103 0 255
|
||||
mappingkey 0.407843142748 150 104 0 255
|
||||
mappingkey 0.411764711142 152 105 0 255
|
||||
mappingkey 0.415686279535 153 106 0 255
|
||||
mappingkey 0.419607847929 155 107 0 255
|
||||
mappingkey 0.423529416323 156 108 0 255
|
||||
mappingkey 0.427450984716 157 109 0 255
|
||||
mappingkey 0.43137255311 159 110 0 255
|
||||
mappingkey 0.435294121504 160 111 0 255
|
||||
mappingkey 0.439215689898 162 112 0 255
|
||||
mappingkey 0.443137258291 163 113 0 255
|
||||
mappingkey 0.447058826685 165 114 0 255
|
||||
mappingkey 0.450980395079 166 115 0 255
|
||||
mappingkey 0.454901963472 168 116 0 255
|
||||
mappingkey 0.458823531866 169 117 0 255
|
||||
mappingkey 0.46274510026 170 118 0 255
|
||||
mappingkey 0.466666668653 172 119 0 255
|
||||
mappingkey 0.470588237047 173 120 0 255
|
||||
mappingkey 0.474509805441 175 121 0 255
|
||||
mappingkey 0.478431373835 176 122 0 255
|
||||
mappingkey 0.482352942228 178 123 0 255
|
||||
mappingkey 0.486274510622 179 124 0 255
|
||||
mappingkey 0.490196079016 181 125 0 255
|
||||
mappingkey 0.494117647409 182 126 0 255
|
||||
mappingkey 0.498039215803 184 127 0 255
|
||||
mappingkey 0.501960813999 185 128 0 255
|
||||
mappingkey 0.505882382393 186 129 0 255
|
||||
mappingkey 0.509803950787 188 130 0 255
|
||||
mappingkey 0.51372551918 189 131 0 255
|
||||
mappingkey 0.517647087574 191 132 0 255
|
||||
mappingkey 0.521568655968 192 133 0 255
|
||||
mappingkey 0.525490224361 194 134 0 255
|
||||
mappingkey 0.529411792755 195 135 0 255
|
||||
mappingkey 0.533333361149 197 136 0 255
|
||||
mappingkey 0.537254929543 198 137 0 255
|
||||
mappingkey 0.541176497936 199 138 0 255
|
||||
mappingkey 0.54509806633 201 139 0 255
|
||||
mappingkey 0.549019634724 202 140 0 255
|
||||
mappingkey 0.552941203117 204 141 0 255
|
||||
mappingkey 0.556862771511 205 142 0 255
|
||||
mappingkey 0.560784339905 207 143 0 255
|
||||
mappingkey 0.564705908298 208 144 0 255
|
||||
mappingkey 0.568627476692 210 145 0 255
|
||||
mappingkey 0.572549045086 211 146 0 255
|
||||
mappingkey 0.57647061348 212 147 0 255
|
||||
mappingkey 0.580392181873 214 148 0 255
|
||||
mappingkey 0.584313750267 215 149 0 255
|
||||
mappingkey 0.588235318661 217 150 0 255
|
||||
mappingkey 0.592156887054 218 151 0 255
|
||||
mappingkey 0.596078455448 220 152 0 255
|
||||
mappingkey 0.600000023842 221 153 0 255
|
||||
mappingkey 0.603921592236 223 154 0 255
|
||||
mappingkey 0.607843160629 224 155 0 255
|
||||
mappingkey 0.611764729023 226 156 0 255
|
||||
mappingkey 0.615686297417 227 157 0 255
|
||||
mappingkey 0.61960786581 228 158 0 255
|
||||
mappingkey 0.623529434204 230 159 0 255
|
||||
mappingkey 0.627451002598 231 160 0 255
|
||||
mappingkey 0.631372570992 233 161 0 255
|
||||
mappingkey 0.635294139385 234 162 0 255
|
||||
mappingkey 0.639215707779 236 163 0 255
|
||||
mappingkey 0.643137276173 237 164 0 255
|
||||
mappingkey 0.647058844566 239 165 0 255
|
||||
mappingkey 0.65098041296 240 166 0 255
|
||||
mappingkey 0.654901981354 241 167 0 255
|
||||
mappingkey 0.658823549747 243 168 0 255
|
||||
mappingkey 0.662745118141 244 169 0 255
|
||||
mappingkey 0.666666686535 246 170 0 255
|
||||
mappingkey 0.670588254929 247 171 0 255
|
||||
mappingkey 0.674509823322 249 172 0 255
|
||||
mappingkey 0.678431391716 250 173 0 255
|
||||
mappingkey 0.68235296011 252 174 0 255
|
||||
mappingkey 0.686274528503 253 175 0 255
|
||||
mappingkey 0.690196096897 255 176 0 255
|
||||
mappingkey 0.694117665291 255 177 0 255
|
||||
mappingkey 0.698039233685 255 178 0 255
|
||||
mappingkey 0.701960802078 255 179 0 255
|
||||
mappingkey 0.705882370472 255 180 0 255
|
||||
mappingkey 0.709803938866 255 181 0 255
|
||||
mappingkey 0.713725507259 255 182 0 255
|
||||
mappingkey 0.717647075653 255 183 0 255
|
||||
mappingkey 0.721568644047 255 184 0 255
|
||||
mappingkey 0.72549021244 255 185 0 255
|
||||
mappingkey 0.729411780834 255 186 0 255
|
||||
mappingkey 0.733333349228 255 187 0 255
|
||||
mappingkey 0.737254917622 255 188 0 255
|
||||
mappingkey 0.741176486015 255 189 0 255
|
||||
mappingkey 0.745098054409 255 190 0 255
|
||||
mappingkey 0.749019622803 255 191 3 255
|
||||
mappingkey 0.752941191196 255 192 7 255
|
||||
mappingkey 0.75686275959 255 193 11 255
|
||||
mappingkey 0.760784327984 255 194 15 255
|
||||
mappingkey 0.764705896378 255 195 19 255
|
||||
mappingkey 0.768627464771 255 196 23 255
|
||||
mappingkey 0.772549033165 255 197 27 255
|
||||
mappingkey 0.776470601559 255 198 31 255
|
||||
mappingkey 0.780392169952 255 199 35 255
|
||||
mappingkey 0.784313738346 255 200 39 255
|
||||
mappingkey 0.78823530674 255 201 43 255
|
||||
mappingkey 0.792156875134 255 202 47 255
|
||||
mappingkey 0.796078443527 255 203 51 255
|
||||
mappingkey 0.800000011921 255 204 54 255
|
||||
mappingkey 0.803921580315 255 205 58 255
|
||||
mappingkey 0.807843148708 255 206 62 255
|
||||
mappingkey 0.811764717102 255 207 66 255
|
||||
mappingkey 0.815686285496 255 208 70 255
|
||||
mappingkey 0.819607853889 255 209 74 255
|
||||
mappingkey 0.823529422283 255 210 78 255
|
||||
mappingkey 0.827450990677 255 211 82 255
|
||||
mappingkey 0.831372559071 255 212 86 255
|
||||
mappingkey 0.835294127464 255 213 90 255
|
||||
mappingkey 0.839215695858 255 214 94 255
|
||||
mappingkey 0.843137264252 255 215 98 255
|
||||
mappingkey 0.847058832645 255 216 102 255
|
||||
mappingkey 0.850980401039 255 217 105 255
|
||||
mappingkey 0.854901969433 255 218 109 255
|
||||
mappingkey 0.858823537827 255 219 113 255
|
||||
mappingkey 0.86274510622 255 220 117 255
|
||||
mappingkey 0.866666674614 255 221 121 255
|
||||
mappingkey 0.870588243008 255 222 125 255
|
||||
mappingkey 0.874509811401 255 223 129 255
|
||||
mappingkey 0.878431379795 255 224 133 255
|
||||
mappingkey 0.882352948189 255 225 137 255
|
||||
mappingkey 0.886274516582 255 226 141 255
|
||||
mappingkey 0.890196084976 255 227 145 255
|
||||
mappingkey 0.89411765337 255 228 149 255
|
||||
mappingkey 0.898039221764 255 229 153 255
|
||||
mappingkey 0.901960790157 255 230 156 255
|
||||
mappingkey 0.905882358551 255 231 160 255
|
||||
mappingkey 0.909803926945 255 232 164 255
|
||||
mappingkey 0.913725495338 255 233 168 255
|
||||
mappingkey 0.917647063732 255 234 172 255
|
||||
mappingkey 0.921568632126 255 235 176 255
|
||||
mappingkey 0.92549020052 255 236 180 255
|
||||
mappingkey 0.929411768913 255 237 184 255
|
||||
mappingkey 0.933333337307 255 238 188 255
|
||||
mappingkey 0.937254905701 255 239 192 255
|
||||
mappingkey 0.941176474094 255 240 196 255
|
||||
mappingkey 0.945098042488 255 241 200 255
|
||||
mappingkey 0.949019610882 255 242 204 255
|
||||
mappingkey 0.952941179276 255 243 207 255
|
||||
mappingkey 0.956862747669 255 244 211 255
|
||||
mappingkey 0.960784316063 255 245 215 255
|
||||
mappingkey 0.964705884457 255 246 219 255
|
||||
mappingkey 0.96862745285 255 247 223 255
|
||||
mappingkey 0.972549021244 255 248 227 255
|
||||
mappingkey 0.976470589638 255 249 231 255
|
||||
mappingkey 0.980392158031 255 250 235 255
|
||||
mappingkey 0.984313726425 255 251 239 255
|
||||
mappingkey 0.988235294819 255 252 243 255
|
||||
mappingkey 0.992156863213 255 253 247 255
|
||||
mappingkey 0.996078431606 255 254 251 255
|
||||
mappingkey 1.0 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0 0 0 0 255
|
||||
mappingkey 0.00392157 15 1 0 255
|
||||
mappingkey 0.00784314 22 2 0 255
|
||||
mappingkey 0.0117647 27 3 0 255
|
||||
mappingkey 0.0156863 31 4 0 255
|
||||
mappingkey 0.0196078 35 5 0 255
|
||||
mappingkey 0.0235294 39 6 0 255
|
||||
mappingkey 0.027451 42 7 0 255
|
||||
mappingkey 0.0313726 45 8 0 255
|
||||
mappingkey 0.0352941 47 9 0 255
|
||||
mappingkey 0.0392157 50 10 0 255
|
||||
mappingkey 0.0431373 52 11 0 255
|
||||
mappingkey 0.0470588 55 12 0 255
|
||||
mappingkey 0.0509804 57 13 0 255
|
||||
mappingkey 0.054902 59 14 0 255
|
||||
mappingkey 0.0588235 61 15 0 255
|
||||
mappingkey 0.0627451 63 16 1 255
|
||||
mappingkey 0.0666667 65 17 1 255
|
||||
mappingkey 0.0705882 67 18 1 255
|
||||
mappingkey 0.0745098 69 19 1 255
|
||||
mappingkey 0.0784314 71 20 1 255
|
||||
mappingkey 0.0823529 73 21 1 255
|
||||
mappingkey 0.0862745 74 22 1 255
|
||||
mappingkey 0.0901961 76 23 2 255
|
||||
mappingkey 0.0941176 78 24 2 255
|
||||
mappingkey 0.0980392 79 25 2 255
|
||||
mappingkey 0.101961 81 26 2 255
|
||||
mappingkey 0.105882 82 27 2 255
|
||||
mappingkey 0.109804 84 28 3 255
|
||||
mappingkey 0.113725 85 29 3 255
|
||||
mappingkey 0.117647 87 30 3 255
|
||||
mappingkey 0.121569 88 31 3 255
|
||||
mappingkey 0.12549 90 32 4 255
|
||||
mappingkey 0.129412 91 33 4 255
|
||||
mappingkey 0.133333 93 34 4 255
|
||||
mappingkey 0.137255 94 35 4 255
|
||||
mappingkey 0.141176 95 36 5 255
|
||||
mappingkey 0.145098 97 37 5 255
|
||||
mappingkey 0.14902 98 38 5 255
|
||||
mappingkey 0.152941 99 39 5 255
|
||||
mappingkey 0.156863 100 40 6 255
|
||||
mappingkey 0.160784 102 41 6 255
|
||||
mappingkey 0.164706 103 42 6 255
|
||||
mappingkey 0.168627 104 43 7 255
|
||||
mappingkey 0.172549 105 44 7 255
|
||||
mappingkey 0.176471 107 45 7 255
|
||||
mappingkey 0.180392 108 46 8 255
|
||||
mappingkey 0.184314 109 47 8 255
|
||||
mappingkey 0.188235 110 48 9 255
|
||||
mappingkey 0.192157 111 49 9 255
|
||||
mappingkey 0.196078 112 50 9 255
|
||||
mappingkey 0.2 114 51 10 255
|
||||
mappingkey 0.203922 115 52 10 255
|
||||
mappingkey 0.207843 116 53 11 255
|
||||
mappingkey 0.211765 117 54 11 255
|
||||
mappingkey 0.215686 118 55 11 255
|
||||
mappingkey 0.219608 119 56 12 255
|
||||
mappingkey 0.223529 120 57 12 255
|
||||
mappingkey 0.227451 121 58 13 255
|
||||
mappingkey 0.231373 122 59 13 255
|
||||
mappingkey 0.235294 123 60 14 255
|
||||
mappingkey 0.239216 124 61 14 255
|
||||
mappingkey 0.243137 125 62 15 255
|
||||
mappingkey 0.247059 126 63 15 255
|
||||
mappingkey 0.25098 127 64 16 255
|
||||
mappingkey 0.254902 128 65 16 255
|
||||
mappingkey 0.258824 129 66 17 255
|
||||
mappingkey 0.262745 130 67 17 255
|
||||
mappingkey 0.266667 131 68 18 255
|
||||
mappingkey 0.270588 132 69 18 255
|
||||
mappingkey 0.27451 133 70 19 255
|
||||
mappingkey 0.278431 134 71 19 255
|
||||
mappingkey 0.282353 135 72 20 255
|
||||
mappingkey 0.286275 136 73 20 255
|
||||
mappingkey 0.290196 137 74 21 255
|
||||
mappingkey 0.294118 138 75 22 255
|
||||
mappingkey 0.298039 139 76 22 255
|
||||
mappingkey 0.301961 140 77 23 255
|
||||
mappingkey 0.305882 141 78 23 255
|
||||
mappingkey 0.309804 141 79 24 255
|
||||
mappingkey 0.313726 142 80 25 255
|
||||
mappingkey 0.317647 143 81 25 255
|
||||
mappingkey 0.321569 144 82 26 255
|
||||
mappingkey 0.32549 145 83 27 255
|
||||
mappingkey 0.329412 146 84 27 255
|
||||
mappingkey 0.333333 147 85 28 255
|
||||
mappingkey 0.337255 148 86 29 255
|
||||
mappingkey 0.341176 148 87 29 255
|
||||
mappingkey 0.345098 149 88 30 255
|
||||
mappingkey 0.34902 150 89 31 255
|
||||
mappingkey 0.352941 151 90 31 255
|
||||
mappingkey 0.356863 152 91 32 255
|
||||
mappingkey 0.360784 153 92 33 255
|
||||
mappingkey 0.364706 153 93 33 255
|
||||
mappingkey 0.368627 154 94 34 255
|
||||
mappingkey 0.372549 155 95 35 255
|
||||
mappingkey 0.376471 156 96 36 255
|
||||
mappingkey 0.380392 157 97 36 255
|
||||
mappingkey 0.384314 158 98 37 255
|
||||
mappingkey 0.388235 158 99 38 255
|
||||
mappingkey 0.392157 159 100 39 255
|
||||
mappingkey 0.396078 160 101 40 255
|
||||
mappingkey 0.4 161 102 40 255
|
||||
mappingkey 0.403922 162 103 41 255
|
||||
mappingkey 0.407843 162 104 42 255
|
||||
mappingkey 0.411765 163 105 43 255
|
||||
mappingkey 0.415686 164 106 44 255
|
||||
mappingkey 0.419608 165 107 44 255
|
||||
mappingkey 0.423529 165 108 45 255
|
||||
mappingkey 0.427451 166 109 46 255
|
||||
mappingkey 0.431373 167 110 47 255
|
||||
mappingkey 0.435294 168 111 48 255
|
||||
mappingkey 0.439216 168 112 49 255
|
||||
mappingkey 0.443137 169 113 50 255
|
||||
mappingkey 0.447059 170 114 50 255
|
||||
mappingkey 0.45098 171 115 51 255
|
||||
mappingkey 0.454902 171 116 52 255
|
||||
mappingkey 0.458824 172 117 53 255
|
||||
mappingkey 0.462745 173 118 54 255
|
||||
mappingkey 0.466667 174 119 55 255
|
||||
mappingkey 0.470588 174 120 56 255
|
||||
mappingkey 0.47451 175 121 57 255
|
||||
mappingkey 0.478431 176 122 58 255
|
||||
mappingkey 0.482353 177 123 59 255
|
||||
mappingkey 0.486275 177 124 60 255
|
||||
mappingkey 0.490196 178 125 61 255
|
||||
mappingkey 0.494118 179 126 62 255
|
||||
mappingkey 0.498039 179 127 63 255
|
||||
mappingkey 0.501961 180 128 64 255
|
||||
mappingkey 0.505882 181 129 65 255
|
||||
mappingkey 0.509804 182 130 66 255
|
||||
mappingkey 0.513726 182 131 67 255
|
||||
mappingkey 0.517647 183 132 68 255
|
||||
mappingkey 0.521569 184 133 69 255
|
||||
mappingkey 0.52549 184 134 70 255
|
||||
mappingkey 0.529412 185 135 71 255
|
||||
mappingkey 0.533333 186 136 72 255
|
||||
mappingkey 0.537255 186 137 73 255
|
||||
mappingkey 0.541176 187 138 74 255
|
||||
mappingkey 0.545098 188 139 75 255
|
||||
mappingkey 0.54902 188 140 76 255
|
||||
mappingkey 0.552941 189 141 77 255
|
||||
mappingkey 0.556863 190 142 79 255
|
||||
mappingkey 0.560784 190 143 80 255
|
||||
mappingkey 0.564706 191 144 81 255
|
||||
mappingkey 0.568627 192 145 82 255
|
||||
mappingkey 0.572549 192 146 83 255
|
||||
mappingkey 0.576471 193 147 84 255
|
||||
mappingkey 0.580392 194 148 85 255
|
||||
mappingkey 0.584314 194 149 87 255
|
||||
mappingkey 0.588235 195 150 88 255
|
||||
mappingkey 0.592157 196 151 89 255
|
||||
mappingkey 0.596078 196 152 90 255
|
||||
mappingkey 0.6 197 153 91 255
|
||||
mappingkey 0.603922 198 154 93 255
|
||||
mappingkey 0.607843 198 155 94 255
|
||||
mappingkey 0.611765 199 156 95 255
|
||||
mappingkey 0.615686 200 157 96 255
|
||||
mappingkey 0.619608 200 158 97 255
|
||||
mappingkey 0.623529 201 159 99 255
|
||||
mappingkey 0.627451 201 160 100 255
|
||||
mappingkey 0.631373 202 161 101 255
|
||||
mappingkey 0.635294 203 162 102 255
|
||||
mappingkey 0.639216 203 163 104 255
|
||||
mappingkey 0.643137 204 164 105 255
|
||||
mappingkey 0.647059 205 165 106 255
|
||||
mappingkey 0.65098 205 166 108 255
|
||||
mappingkey 0.654902 206 167 109 255
|
||||
mappingkey 0.658824 206 168 110 255
|
||||
mappingkey 0.662745 207 169 112 255
|
||||
mappingkey 0.666667 208 170 113 255
|
||||
mappingkey 0.670588 208 171 114 255
|
||||
mappingkey 0.67451 209 172 116 255
|
||||
mappingkey 0.678431 210 173 117 255
|
||||
mappingkey 0.682353 210 174 118 255
|
||||
mappingkey 0.686275 211 175 120 255
|
||||
mappingkey 0.690196 211 176 121 255
|
||||
mappingkey 0.694118 212 177 122 255
|
||||
mappingkey 0.698039 213 178 124 255
|
||||
mappingkey 0.701961 213 179 125 255
|
||||
mappingkey 0.705882 214 180 127 255
|
||||
mappingkey 0.709804 214 181 128 255
|
||||
mappingkey 0.713726 215 182 129 255
|
||||
mappingkey 0.717647 216 183 131 255
|
||||
mappingkey 0.721569 216 184 132 255
|
||||
mappingkey 0.72549 217 185 134 255
|
||||
mappingkey 0.729412 217 186 135 255
|
||||
mappingkey 0.733333 218 187 137 255
|
||||
mappingkey 0.737255 218 188 138 255
|
||||
mappingkey 0.741176 219 189 140 255
|
||||
mappingkey 0.745098 220 190 141 255
|
||||
mappingkey 0.74902 220 191 143 255
|
||||
mappingkey 0.752941 221 192 144 255
|
||||
mappingkey 0.756863 221 193 146 255
|
||||
mappingkey 0.760784 222 194 147 255
|
||||
mappingkey 0.764706 222 195 149 255
|
||||
mappingkey 0.768627 223 196 150 255
|
||||
mappingkey 0.772549 224 197 152 255
|
||||
mappingkey 0.776471 224 198 153 255
|
||||
mappingkey 0.780392 225 199 155 255
|
||||
mappingkey 0.784314 225 200 156 255
|
||||
mappingkey 0.788235 226 201 158 255
|
||||
mappingkey 0.792157 226 202 160 255
|
||||
mappingkey 0.796078 227 203 161 255
|
||||
mappingkey 0.8 228 204 163 255
|
||||
mappingkey 0.803922 228 205 164 255
|
||||
mappingkey 0.807843 229 206 166 255
|
||||
mappingkey 0.811765 229 207 168 255
|
||||
mappingkey 0.815686 230 208 169 255
|
||||
mappingkey 0.819608 230 209 171 255
|
||||
mappingkey 0.823529 231 210 172 255
|
||||
mappingkey 0.827451 231 211 174 255
|
||||
mappingkey 0.831373 232 212 176 255
|
||||
mappingkey 0.835294 233 213 177 255
|
||||
mappingkey 0.839216 233 214 179 255
|
||||
mappingkey 0.843137 234 215 181 255
|
||||
mappingkey 0.847059 234 216 182 255
|
||||
mappingkey 0.85098 235 217 184 255
|
||||
mappingkey 0.854902 235 218 186 255
|
||||
mappingkey 0.858824 236 219 188 255
|
||||
mappingkey 0.862745 236 220 189 255
|
||||
mappingkey 0.866667 237 221 191 255
|
||||
mappingkey 0.870588 237 222 193 255
|
||||
mappingkey 0.87451 238 223 195 255
|
||||
mappingkey 0.878431 238 224 196 255
|
||||
mappingkey 0.882353 239 225 198 255
|
||||
mappingkey 0.886275 240 226 200 255
|
||||
mappingkey 0.890196 240 227 202 255
|
||||
mappingkey 0.894118 241 228 203 255
|
||||
mappingkey 0.898039 241 229 205 255
|
||||
mappingkey 0.901961 242 230 207 255
|
||||
mappingkey 0.905882 242 231 209 255
|
||||
mappingkey 0.909804 243 232 211 255
|
||||
mappingkey 0.913725 243 233 212 255
|
||||
mappingkey 0.917647 244 234 214 255
|
||||
mappingkey 0.921569 244 235 216 255
|
||||
mappingkey 0.92549 245 236 218 255
|
||||
mappingkey 0.929412 245 237 220 255
|
||||
mappingkey 0.933333 246 238 222 255
|
||||
mappingkey 0.937255 246 239 224 255
|
||||
mappingkey 0.941176 247 240 225 255
|
||||
mappingkey 0.945098 247 241 227 255
|
||||
mappingkey 0.94902 248 242 229 255
|
||||
mappingkey 0.952941 248 243 231 255
|
||||
mappingkey 0.956863 249 244 233 255
|
||||
mappingkey 0.960784 249 245 235 255
|
||||
mappingkey 0.964706 250 246 237 255
|
||||
mappingkey 0.968627 250 247 239 255
|
||||
mappingkey 0.972549 251 248 241 255
|
||||
mappingkey 0.976471 251 249 243 255
|
||||
mappingkey 0.980392 252 250 245 255
|
||||
mappingkey 0.984314 252 251 247 255
|
||||
mappingkey 0.988235 253 252 249 255
|
||||
mappingkey 0.992157 253 253 251 255
|
||||
mappingkey 0.996078 254 254 253 255
|
||||
mappingkey 1 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0 0 0 0 255
|
||||
mappingkey 0.00392157 15 1 10 255
|
||||
mappingkey 0.00784314 22 2 14 255
|
||||
mappingkey 0.0117647 27 3 18 255
|
||||
mappingkey 0.0156863 31 4 20 255
|
||||
mappingkey 0.0196078 35 5 23 255
|
||||
mappingkey 0.0235294 39 6 26 255
|
||||
mappingkey 0.027451 42 7 28 255
|
||||
mappingkey 0.0313726 45 8 30 255
|
||||
mappingkey 0.0352941 47 9 31 255
|
||||
mappingkey 0.0392157 50 10 33 255
|
||||
mappingkey 0.0431373 52 11 34 255
|
||||
mappingkey 0.0470588 55 12 36 255
|
||||
mappingkey 0.0509804 57 13 38 255
|
||||
mappingkey 0.054902 59 14 39 255
|
||||
mappingkey 0.0588235 61 15 40 255
|
||||
mappingkey 0.0627451 63 16 42 255
|
||||
mappingkey 0.0666667 65 17 43 255
|
||||
mappingkey 0.0705882 67 18 45 255
|
||||
mappingkey 0.0745098 69 19 46 255
|
||||
mappingkey 0.0784314 71 20 47 255
|
||||
mappingkey 0.0823529 73 21 49 255
|
||||
mappingkey 0.0862745 74 22 49 255
|
||||
mappingkey 0.0901961 76 23 51 255
|
||||
mappingkey 0.0941176 78 24 52 255
|
||||
mappingkey 0.0980392 79 25 53 255
|
||||
mappingkey 0.101961 81 26 54 255
|
||||
mappingkey 0.105882 82 27 55 255
|
||||
mappingkey 0.109804 84 28 57 255
|
||||
mappingkey 0.113725 85 29 57 255
|
||||
mappingkey 0.117647 87 30 59 255
|
||||
mappingkey 0.121569 88 31 59 255
|
||||
mappingkey 0.12549 90 32 61 255
|
||||
mappingkey 0.129412 91 33 62 255
|
||||
mappingkey 0.133333 93 34 63 255
|
||||
mappingkey 0.137255 94 35 64 255
|
||||
mappingkey 0.141176 95 36 65 255
|
||||
mappingkey 0.145098 97 37 66 255
|
||||
mappingkey 0.14902 98 38 67 255
|
||||
mappingkey 0.152941 99 39 67 255
|
||||
mappingkey 0.156863 100 40 68 255
|
||||
mappingkey 0.160784 102 41 70 255
|
||||
mappingkey 0.164706 103 42 70 255
|
||||
mappingkey 0.168627 104 43 71 255
|
||||
mappingkey 0.172549 105 44 72 255
|
||||
mappingkey 0.176471 107 45 73 255
|
||||
mappingkey 0.180392 108 46 74 255
|
||||
mappingkey 0.184314 109 47 75 255
|
||||
mappingkey 0.188235 110 48 76 255
|
||||
mappingkey 0.192157 111 49 77 255
|
||||
mappingkey 0.196078 112 50 77 255
|
||||
mappingkey 0.2 114 51 79 255
|
||||
mappingkey 0.203922 115 52 80 255
|
||||
mappingkey 0.207843 116 53 81 255
|
||||
mappingkey 0.211765 117 54 81 255
|
||||
mappingkey 0.215686 118 55 82 255
|
||||
mappingkey 0.219608 119 56 83 255
|
||||
mappingkey 0.223529 120 57 84 255
|
||||
mappingkey 0.227451 121 58 85 255
|
||||
mappingkey 0.231373 122 59 85 255
|
||||
mappingkey 0.235294 123 60 86 255
|
||||
mappingkey 0.239216 124 61 87 255
|
||||
mappingkey 0.243137 125 62 88 255
|
||||
mappingkey 0.247059 126 63 89 255
|
||||
mappingkey 0.25098 127 64 90 255
|
||||
mappingkey 0.254902 128 65 90 255
|
||||
mappingkey 0.258824 129 66 91 255
|
||||
mappingkey 0.262745 130 67 92 255
|
||||
mappingkey 0.266667 131 68 93 255
|
||||
mappingkey 0.270588 132 69 94 255
|
||||
mappingkey 0.27451 133 70 95 255
|
||||
mappingkey 0.278431 134 71 95 255
|
||||
mappingkey 0.282353 135 72 96 255
|
||||
mappingkey 0.286275 136 73 97 255
|
||||
mappingkey 0.290196 137 74 98 255
|
||||
mappingkey 0.294118 138 75 99 255
|
||||
mappingkey 0.298039 139 76 100 255
|
||||
mappingkey 0.301961 140 77 101 255
|
||||
mappingkey 0.305882 141 78 101 255
|
||||
mappingkey 0.309804 141 79 102 255
|
||||
mappingkey 0.313726 142 80 103 255
|
||||
mappingkey 0.317647 143 81 103 255
|
||||
mappingkey 0.321569 144 82 104 255
|
||||
mappingkey 0.32549 145 83 105 255
|
||||
mappingkey 0.329412 146 84 106 255
|
||||
mappingkey 0.333333 147 85 107 255
|
||||
mappingkey 0.337255 148 86 108 255
|
||||
mappingkey 0.341176 148 87 108 255
|
||||
mappingkey 0.345098 149 88 109 255
|
||||
mappingkey 0.34902 150 89 110 255
|
||||
mappingkey 0.352941 151 90 111 255
|
||||
mappingkey 0.356863 152 91 112 255
|
||||
mappingkey 0.360784 153 92 113 255
|
||||
mappingkey 0.364706 153 93 113 255
|
||||
mappingkey 0.368627 154 94 114 255
|
||||
mappingkey 0.372549 155 95 115 255
|
||||
mappingkey 0.376471 156 96 116 255
|
||||
mappingkey 0.380392 157 97 116 255
|
||||
mappingkey 0.384314 158 98 117 255
|
||||
mappingkey 0.388235 158 99 118 255
|
||||
mappingkey 0.392157 159 100 119 255
|
||||
mappingkey 0.396078 160 101 120 255
|
||||
mappingkey 0.4 161 102 120 255
|
||||
mappingkey 0.403922 162 103 121 255
|
||||
mappingkey 0.407843 162 104 122 255
|
||||
mappingkey 0.411765 163 105 123 255
|
||||
mappingkey 0.415686 164 106 124 255
|
||||
mappingkey 0.419608 165 107 124 255
|
||||
mappingkey 0.423529 165 108 125 255
|
||||
mappingkey 0.427451 166 109 126 255
|
||||
mappingkey 0.431373 167 110 127 255
|
||||
mappingkey 0.435294 168 111 128 255
|
||||
mappingkey 0.439216 168 112 128 255
|
||||
mappingkey 0.443137 169 113 129 255
|
||||
mappingkey 0.447059 170 114 130 255
|
||||
mappingkey 0.45098 171 115 131 255
|
||||
mappingkey 0.454902 171 116 131 255
|
||||
mappingkey 0.458824 172 117 132 255
|
||||
mappingkey 0.462745 173 118 133 255
|
||||
mappingkey 0.466667 174 119 134 255
|
||||
mappingkey 0.470588 174 120 134 255
|
||||
mappingkey 0.47451 175 121 135 255
|
||||
mappingkey 0.478431 176 122 136 255
|
||||
mappingkey 0.482353 177 123 137 255
|
||||
mappingkey 0.486275 177 124 138 255
|
||||
mappingkey 0.490196 178 125 139 255
|
||||
mappingkey 0.494118 179 126 140 255
|
||||
mappingkey 0.498039 179 127 140 255
|
||||
mappingkey 0.501961 180 128 141 255
|
||||
mappingkey 0.505882 181 129 142 255
|
||||
mappingkey 0.509804 182 130 143 255
|
||||
mappingkey 0.513726 182 131 143 255
|
||||
mappingkey 0.517647 183 132 144 255
|
||||
mappingkey 0.521569 184 133 145 255
|
||||
mappingkey 0.52549 184 134 146 255
|
||||
mappingkey 0.529412 185 135 147 255
|
||||
mappingkey 0.533333 186 136 148 255
|
||||
mappingkey 0.537255 186 137 148 255
|
||||
mappingkey 0.541176 187 138 149 255
|
||||
mappingkey 0.545098 188 139 150 255
|
||||
mappingkey 0.54902 188 140 150 255
|
||||
mappingkey 0.552941 189 141 151 255
|
||||
mappingkey 0.556863 190 142 153 255
|
||||
mappingkey 0.560784 190 143 153 255
|
||||
mappingkey 0.564706 191 144 154 255
|
||||
mappingkey 0.568627 192 145 155 255
|
||||
mappingkey 0.572549 192 146 155 255
|
||||
mappingkey 0.576471 193 147 156 255
|
||||
mappingkey 0.580392 194 148 157 255
|
||||
mappingkey 0.584314 194 149 158 255
|
||||
mappingkey 0.588235 195 150 159 255
|
||||
mappingkey 0.592157 196 151 160 255
|
||||
mappingkey 0.596078 196 152 160 255
|
||||
mappingkey 0.6 197 153 161 255
|
||||
mappingkey 0.603922 198 154 163 255
|
||||
mappingkey 0.607843 198 155 163 255
|
||||
mappingkey 0.611765 199 156 164 255
|
||||
mappingkey 0.615686 200 157 165 255
|
||||
mappingkey 0.619608 200 158 165 255
|
||||
mappingkey 0.623529 201 159 167 255
|
||||
mappingkey 0.627451 201 160 167 255
|
||||
mappingkey 0.631373 202 161 168 255
|
||||
mappingkey 0.635294 203 162 169 255
|
||||
mappingkey 0.639216 203 163 170 255
|
||||
mappingkey 0.643137 204 164 171 255
|
||||
mappingkey 0.647059 205 165 172 255
|
||||
mappingkey 0.65098 205 166 172 255
|
||||
mappingkey 0.654902 206 167 173 255
|
||||
mappingkey 0.658824 206 168 174 255
|
||||
mappingkey 0.662745 207 169 175 255
|
||||
mappingkey 0.666667 208 170 176 255
|
||||
mappingkey 0.670588 208 171 176 255
|
||||
mappingkey 0.67451 209 172 178 255
|
||||
mappingkey 0.678431 210 173 179 255
|
||||
mappingkey 0.682353 210 174 179 255
|
||||
mappingkey 0.686275 211 175 180 255
|
||||
mappingkey 0.690196 211 176 181 255
|
||||
mappingkey 0.694118 212 177 182 255
|
||||
mappingkey 0.698039 213 178 183 255
|
||||
mappingkey 0.701961 213 179 183 255
|
||||
mappingkey 0.705882 214 180 185 255
|
||||
mappingkey 0.709804 214 181 185 255
|
||||
mappingkey 0.713726 215 182 186 255
|
||||
mappingkey 0.717647 216 183 187 255
|
||||
mappingkey 0.721569 216 184 188 255
|
||||
mappingkey 0.72549 217 185 189 255
|
||||
mappingkey 0.729412 217 186 189 255
|
||||
mappingkey 0.733333 218 187 191 255
|
||||
mappingkey 0.737255 218 188 191 255
|
||||
mappingkey 0.741176 219 189 192 255
|
||||
mappingkey 0.745098 220 190 193 255
|
||||
mappingkey 0.74902 220 191 194 255
|
||||
mappingkey 0.752941 221 192 195 255
|
||||
mappingkey 0.756863 221 193 196 255
|
||||
mappingkey 0.760784 222 194 197 255
|
||||
mappingkey 0.764706 222 195 197 255
|
||||
mappingkey 0.768627 223 196 198 255
|
||||
mappingkey 0.772549 224 197 200 255
|
||||
mappingkey 0.776471 224 198 200 255
|
||||
mappingkey 0.780392 225 199 201 255
|
||||
mappingkey 0.784314 225 200 202 255
|
||||
mappingkey 0.788235 226 201 203 255
|
||||
mappingkey 0.792157 226 202 204 255
|
||||
mappingkey 0.796078 227 203 205 255
|
||||
mappingkey 0.8 228 204 206 255
|
||||
mappingkey 0.803922 228 205 206 255
|
||||
mappingkey 0.807843 229 206 208 255
|
||||
mappingkey 0.811765 229 207 208 255
|
||||
mappingkey 0.815686 230 208 209 255
|
||||
mappingkey 0.819608 230 209 210 255
|
||||
mappingkey 0.823529 231 210 211 255
|
||||
mappingkey 0.827451 231 211 212 255
|
||||
mappingkey 0.831373 232 212 213 255
|
||||
mappingkey 0.835294 233 213 214 255
|
||||
mappingkey 0.839216 233 214 215 255
|
||||
mappingkey 0.843137 234 215 216 255
|
||||
mappingkey 0.847059 234 216 216 255
|
||||
mappingkey 0.85098 235 217 218 255
|
||||
mappingkey 0.854902 235 218 218 255
|
||||
mappingkey 0.858824 236 219 220 255
|
||||
mappingkey 0.862745 236 220 220 255
|
||||
mappingkey 0.866667 237 221 221 255
|
||||
mappingkey 0.870588 237 222 222 255
|
||||
mappingkey 0.87451 238 223 223 255
|
||||
mappingkey 0.878431 238 224 224 255
|
||||
mappingkey 0.882353 239 225 225 255
|
||||
mappingkey 0.886275 240 226 226 255
|
||||
mappingkey 0.890196 240 227 227 255
|
||||
mappingkey 0.894118 241 228 228 255
|
||||
mappingkey 0.898039 241 229 229 255
|
||||
mappingkey 0.901961 242 230 230 255
|
||||
mappingkey 0.905882 242 231 231 255
|
||||
mappingkey 0.909804 243 232 232 255
|
||||
mappingkey 0.913725 243 233 232 255
|
||||
mappingkey 0.917647 244 234 234 255
|
||||
mappingkey 0.921569 244 235 234 255
|
||||
mappingkey 0.92549 245 236 236 255
|
||||
mappingkey 0.929412 245 237 236 255
|
||||
mappingkey 0.933333 246 238 238 255
|
||||
mappingkey 0.937255 246 239 238 255
|
||||
mappingkey 0.941176 247 240 239 255
|
||||
mappingkey 0.945098 247 241 240 255
|
||||
mappingkey 0.94902 248 242 241 255
|
||||
mappingkey 0.952941 248 243 242 255
|
||||
mappingkey 0.956863 249 244 243 255
|
||||
mappingkey 0.960784 249 245 244 255
|
||||
mappingkey 0.964706 250 246 245 255
|
||||
mappingkey 0.968627 250 247 246 255
|
||||
mappingkey 0.972549 251 248 247 255
|
||||
mappingkey 0.976471 251 249 248 255
|
||||
mappingkey 0.980392 252 250 249 255
|
||||
mappingkey 0.984314 252 251 250 255
|
||||
mappingkey 0.988235 253 252 251 255
|
||||
mappingkey 0.992157 253 253 252 255
|
||||
mappingkey 0.996078 254 254 253 255
|
||||
mappingkey 1 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0 0 0 0 255
|
||||
mappingkey 0.00392157 0 0 0 255
|
||||
mappingkey 0.00784314 0 0 0 255
|
||||
mappingkey 0.0117647 0 0 0 255
|
||||
mappingkey 0.0156863 0 0 0 255
|
||||
mappingkey 0.0196078 0 0 0 255
|
||||
mappingkey 0.0235294 0 0 0 255
|
||||
mappingkey 0.027451 0 0 0 255
|
||||
mappingkey 0.0313726 0 0 0 255
|
||||
mappingkey 0.0352941 0 0 0 255
|
||||
mappingkey 0.0392157 0 0 0 255
|
||||
mappingkey 0.0431373 0 0 0 255
|
||||
mappingkey 0.0470588 0 0 0 255
|
||||
mappingkey 0.0509804 0 0 0 255
|
||||
mappingkey 0.054902 0 0 0 255
|
||||
mappingkey 0.0588235 0 0 0 255
|
||||
mappingkey 0.0627451 0 0 0 255
|
||||
mappingkey 0.0666667 0 0 0 255
|
||||
mappingkey 0.0705882 0 0 0 255
|
||||
mappingkey 0.0745098 0 0 0 255
|
||||
mappingkey 0.0784314 0 0 0 255
|
||||
mappingkey 0.0823529 1 0 0 255
|
||||
mappingkey 0.0862745 5 0 0 255
|
||||
mappingkey 0.0901961 7 0 0 255
|
||||
mappingkey 0.0941176 8 0 0 255
|
||||
mappingkey 0.0980392 11 0 0 255
|
||||
mappingkey 0.101961 15 0 0 255
|
||||
mappingkey 0.105882 17 0 0 255
|
||||
mappingkey 0.109804 21 0 0 255
|
||||
mappingkey 0.113725 23 0 0 255
|
||||
mappingkey 0.117647 27 0 0 255
|
||||
mappingkey 0.121569 27 0 0 255
|
||||
mappingkey 0.12549 30 0 0 255
|
||||
mappingkey 0.129412 33 0 0 255
|
||||
mappingkey 0.133333 36 0 0 255
|
||||
mappingkey 0.137255 37 0 0 255
|
||||
mappingkey 0.141176 40 0 0 255
|
||||
mappingkey 0.145098 44 0 0 255
|
||||
mappingkey 0.14902 46 0 0 255
|
||||
mappingkey 0.152941 47 0 0 255
|
||||
mappingkey 0.156863 49 0 0 255
|
||||
mappingkey 0.160784 52 0 0 255
|
||||
mappingkey 0.164706 53 0 0 255
|
||||
mappingkey 0.168627 56 0 0 255
|
||||
mappingkey 0.172549 60 0 0 255
|
||||
mappingkey 0.176471 62 0 0 255
|
||||
mappingkey 0.180392 63 0 0 255
|
||||
mappingkey 0.184314 65 0 0 255
|
||||
mappingkey 0.188235 68 0 0 255
|
||||
mappingkey 0.192157 69 0 0 255
|
||||
mappingkey 0.196078 70 0 0 255
|
||||
mappingkey 0.2 73 0 0 255
|
||||
mappingkey 0.203922 76 0 0 255
|
||||
mappingkey 0.207843 78 0 0 255
|
||||
mappingkey 0.211765 79 0 0 255
|
||||
mappingkey 0.215686 84 0 0 255
|
||||
mappingkey 0.219608 84 0 0 255
|
||||
mappingkey 0.223529 85 0 0 255
|
||||
mappingkey 0.227451 86 0 0 255
|
||||
mappingkey 0.231373 89 0 0 255
|
||||
mappingkey 0.235294 92 0 0 255
|
||||
mappingkey 0.239216 94 0 0 255
|
||||
mappingkey 0.243137 95 0 0 255
|
||||
mappingkey 0.247059 97 0 0 255
|
||||
mappingkey 0.25098 99 0 0 255
|
||||
mappingkey 0.254902 101 0 0 255
|
||||
mappingkey 0.258824 101 0 0 255
|
||||
mappingkey 0.262745 104 0 0 255
|
||||
mappingkey 0.266667 105 0 0 255
|
||||
mappingkey 0.270588 108 0 0 255
|
||||
mappingkey 0.27451 110 0 0 255
|
||||
mappingkey 0.278431 111 0 0 255
|
||||
mappingkey 0.282353 113 0 0 255
|
||||
mappingkey 0.286275 115 0 0 255
|
||||
mappingkey 0.290196 118 0 0 255
|
||||
mappingkey 0.294118 120 0 0 255
|
||||
mappingkey 0.298039 120 0 0 255
|
||||
mappingkey 0.301961 121 0 0 255
|
||||
mappingkey 0.305882 124 0 0 255
|
||||
mappingkey 0.309804 126 0 0 255
|
||||
mappingkey 0.313726 127 0 0 255
|
||||
mappingkey 0.317647 128 0 0 255
|
||||
mappingkey 0.321569 133 0 0 255
|
||||
mappingkey 0.32549 134 0 0 255
|
||||
mappingkey 0.329412 136 0 0 255
|
||||
mappingkey 0.333333 137 0 0 255
|
||||
mappingkey 0.337255 140 0 0 255
|
||||
mappingkey 0.341176 140 0 0 255
|
||||
mappingkey 0.345098 141 0 0 255
|
||||
mappingkey 0.34902 143 0 0 255
|
||||
mappingkey 0.352941 144 0 0 255
|
||||
mappingkey 0.356863 149 0 0 255
|
||||
mappingkey 0.360784 150 0 0 255
|
||||
mappingkey 0.364706 152 0 0 255
|
||||
mappingkey 0.368627 153 0 0 255
|
||||
mappingkey 0.372549 153 0 0 255
|
||||
mappingkey 0.376471 156 0 0 255
|
||||
mappingkey 0.380392 157 0 0 255
|
||||
mappingkey 0.384314 157 0 0 255
|
||||
mappingkey 0.388235 159 0 0 255
|
||||
mappingkey 0.392157 160 0 0 255
|
||||
mappingkey 0.396078 165 0 0 255
|
||||
mappingkey 0.4 166 0 0 255
|
||||
mappingkey 0.403922 168 0 0 255
|
||||
mappingkey 0.407843 169 0 0 255
|
||||
mappingkey 0.411765 169 0 0 255
|
||||
mappingkey 0.415686 172 0 0 255
|
||||
mappingkey 0.419608 173 0 0 255
|
||||
mappingkey 0.423529 175 1 0 255
|
||||
mappingkey 0.427451 175 1 0 255
|
||||
mappingkey 0.431373 178 5 0 255
|
||||
mappingkey 0.435294 181 9 0 255
|
||||
mappingkey 0.439216 181 9 0 255
|
||||
mappingkey 0.443137 182 11 0 255
|
||||
mappingkey 0.447059 184 13 0 255
|
||||
mappingkey 0.45098 185 15 0 255
|
||||
mappingkey 0.454902 188 18 0 255
|
||||
mappingkey 0.458824 189 20 0 255
|
||||
mappingkey 0.462745 192 24 0 255
|
||||
mappingkey 0.466667 192 24 0 255
|
||||
mappingkey 0.470588 194 26 0 255
|
||||
mappingkey 0.47451 194 26 0 255
|
||||
mappingkey 0.478431 197 30 0 255
|
||||
mappingkey 0.482353 198 32 0 255
|
||||
mappingkey 0.486275 199 34 0 255
|
||||
mappingkey 0.490196 199 34 0 255
|
||||
mappingkey 0.494118 201 35 0 255
|
||||
mappingkey 0.498039 204 39 0 255
|
||||
mappingkey 0.501961 207 43 0 255
|
||||
mappingkey 0.505882 208 45 0 255
|
||||
mappingkey 0.509804 208 45 0 255
|
||||
mappingkey 0.513726 210 47 0 255
|
||||
mappingkey 0.517647 212 51 0 255
|
||||
mappingkey 0.521569 212 51 0 255
|
||||
mappingkey 0.52549 214 52 0 255
|
||||
mappingkey 0.529412 214 52 0 255
|
||||
mappingkey 0.533333 215 54 0 255
|
||||
mappingkey 0.537255 217 56 0 255
|
||||
mappingkey 0.541176 221 62 0 255
|
||||
mappingkey 0.545098 223 64 0 255
|
||||
mappingkey 0.54902 223 64 0 255
|
||||
mappingkey 0.552941 224 66 0 255
|
||||
mappingkey 0.556863 226 68 0 255
|
||||
mappingkey 0.560784 228 71 0 255
|
||||
mappingkey 0.564706 230 73 0 255
|
||||
mappingkey 0.568627 230 73 0 255
|
||||
mappingkey 0.572549 231 75 0 255
|
||||
mappingkey 0.576471 231 75 0 255
|
||||
mappingkey 0.580392 233 77 0 255
|
||||
mappingkey 0.584314 233 77 0 255
|
||||
mappingkey 0.588235 237 83 0 255
|
||||
mappingkey 0.592157 239 85 0 255
|
||||
mappingkey 0.596078 240 86 0 255
|
||||
mappingkey 0.6 241 88 0 255
|
||||
mappingkey 0.603922 241 88 0 255
|
||||
mappingkey 0.607843 244 92 0 255
|
||||
mappingkey 0.611765 246 94 0 255
|
||||
mappingkey 0.615686 247 96 0 255
|
||||
mappingkey 0.619608 247 96 0 255
|
||||
mappingkey 0.623529 249 98 0 255
|
||||
mappingkey 0.627451 249 98 0 255
|
||||
mappingkey 0.631373 253 103 0 255
|
||||
mappingkey 0.635294 253 103 0 255
|
||||
mappingkey 0.639216 255 105 0 255
|
||||
mappingkey 0.643137 255 107 0 255
|
||||
mappingkey 0.647059 255 109 0 255
|
||||
mappingkey 0.65098 255 109 0 255
|
||||
mappingkey 0.654902 255 113 0 255
|
||||
mappingkey 0.658824 255 115 0 255
|
||||
mappingkey 0.662745 255 115 0 255
|
||||
mappingkey 0.666667 255 117 0 255
|
||||
mappingkey 0.670588 255 120 0 255
|
||||
mappingkey 0.67451 255 124 0 255
|
||||
mappingkey 0.678431 255 124 0 255
|
||||
mappingkey 0.682353 255 124 0 255
|
||||
mappingkey 0.686275 255 126 0 255
|
||||
mappingkey 0.690196 255 128 0 255
|
||||
mappingkey 0.694118 255 128 0 255
|
||||
mappingkey 0.698039 255 130 0 255
|
||||
mappingkey 0.701961 255 134 3 255
|
||||
mappingkey 0.705882 255 134 3 255
|
||||
mappingkey 0.709804 255 136 7 255
|
||||
mappingkey 0.713726 255 139 15 255
|
||||
mappingkey 0.717647 255 141 19 255
|
||||
mappingkey 0.721569 255 141 19 255
|
||||
mappingkey 0.72549 255 145 27 255
|
||||
mappingkey 0.729412 255 147 31 255
|
||||
mappingkey 0.733333 255 147 31 255
|
||||
mappingkey 0.737255 255 147 31 255
|
||||
mappingkey 0.741176 255 149 35 255
|
||||
mappingkey 0.745098 255 151 39 255
|
||||
mappingkey 0.74902 255 151 39 255
|
||||
mappingkey 0.752941 255 154 47 255
|
||||
mappingkey 0.756863 255 158 54 255
|
||||
mappingkey 0.760784 255 158 54 255
|
||||
mappingkey 0.764706 255 160 58 255
|
||||
mappingkey 0.768627 255 162 62 255
|
||||
mappingkey 0.772549 255 162 62 255
|
||||
mappingkey 0.776471 255 166 70 255
|
||||
mappingkey 0.780392 255 168 74 255
|
||||
mappingkey 0.784314 255 170 78 255
|
||||
mappingkey 0.788235 255 170 78 255
|
||||
mappingkey 0.792157 255 171 82 255
|
||||
mappingkey 0.796078 255 171 82 255
|
||||
mappingkey 0.8 255 171 82 255
|
||||
mappingkey 0.803922 255 175 90 255
|
||||
mappingkey 0.807843 255 179 98 255
|
||||
mappingkey 0.811765 255 179 98 255
|
||||
mappingkey 0.815686 255 181 102 255
|
||||
mappingkey 0.819608 255 183 105 255
|
||||
mappingkey 0.823529 255 183 105 255
|
||||
mappingkey 0.827451 255 187 113 255
|
||||
mappingkey 0.831373 255 188 117 255
|
||||
mappingkey 0.835294 255 188 117 255
|
||||
mappingkey 0.839216 255 190 121 255
|
||||
mappingkey 0.843137 255 192 125 255
|
||||
mappingkey 0.847059 255 192 125 255
|
||||
mappingkey 0.85098 255 198 137 255
|
||||
mappingkey 0.854902 255 198 137 255
|
||||
mappingkey 0.858824 255 198 137 255
|
||||
mappingkey 0.862745 255 200 141 255
|
||||
mappingkey 0.866667 255 202 145 255
|
||||
mappingkey 0.870588 255 202 145 255
|
||||
mappingkey 0.87451 255 204 149 255
|
||||
mappingkey 0.878431 255 207 156 255
|
||||
mappingkey 0.882353 255 207 156 255
|
||||
mappingkey 0.886275 255 209 160 255
|
||||
mappingkey 0.890196 255 211 164 255
|
||||
mappingkey 0.894118 255 211 164 255
|
||||
mappingkey 0.898039 255 213 168 255
|
||||
mappingkey 0.901961 255 219 180 255
|
||||
mappingkey 0.905882 255 219 180 255
|
||||
mappingkey 0.909804 255 221 184 255
|
||||
mappingkey 0.913725 255 221 184 255
|
||||
mappingkey 0.917647 255 221 184 255
|
||||
mappingkey 0.921569 255 222 188 255
|
||||
mappingkey 0.92549 255 224 192 255
|
||||
mappingkey 0.929412 255 224 192 255
|
||||
mappingkey 0.933333 255 228 200 255
|
||||
mappingkey 0.937255 255 230 204 255
|
||||
mappingkey 0.941176 255 230 204 255
|
||||
mappingkey 0.945098 255 232 207 255
|
||||
mappingkey 0.94902 255 236 215 255
|
||||
mappingkey 0.952941 255 236 215 255
|
||||
mappingkey 0.956863 255 239 223 255
|
||||
mappingkey 0.960784 255 241 227 255
|
||||
mappingkey 0.964706 255 241 227 255
|
||||
mappingkey 0.968627 255 243 231 255
|
||||
mappingkey 0.972549 255 243 231 255
|
||||
mappingkey 0.976471 255 243 231 255
|
||||
mappingkey 0.980392 255 245 235 255
|
||||
mappingkey 0.984314 255 245 235 255
|
||||
mappingkey 0.988235 255 249 243 255
|
||||
mappingkey 0.992157 255 251 247 255
|
||||
mappingkey 0.996078 255 251 247 255
|
||||
mappingkey 1 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0.0 0 0 0 255
|
||||
mappingkey 0.00392156885937 0 1 15 255
|
||||
mappingkey 0.00784313771874 0 2 22 255
|
||||
mappingkey 0.0117647061124 0 3 27 255
|
||||
mappingkey 0.0156862754375 0 4 31 255
|
||||
mappingkey 0.0196078438312 0 5 35 255
|
||||
mappingkey 0.0235294122249 0 6 39 255
|
||||
mappingkey 0.0274509806186 0 7 42 255
|
||||
mappingkey 0.0313725508749 0 8 45 255
|
||||
mappingkey 0.0352941192687 0 9 47 255
|
||||
mappingkey 0.0392156876624 0 10 50 255
|
||||
mappingkey 0.0431372560561 0 11 52 255
|
||||
mappingkey 0.0470588244498 0 12 55 255
|
||||
mappingkey 0.0509803928435 0 13 57 255
|
||||
mappingkey 0.0549019612372 0 14 59 255
|
||||
mappingkey 0.0588235296309 0 15 61 255
|
||||
mappingkey 0.0627451017499 1 16 63 255
|
||||
mappingkey 0.0666666701436 1 17 65 255
|
||||
mappingkey 0.0705882385373 1 18 67 255
|
||||
mappingkey 0.074509806931 1 19 69 255
|
||||
mappingkey 0.0784313753247 1 20 71 255
|
||||
mappingkey 0.0823529437184 1 21 73 255
|
||||
mappingkey 0.0862745121121 1 22 74 255
|
||||
mappingkey 0.0901960805058 2 23 76 255
|
||||
mappingkey 0.0941176488996 2 24 78 255
|
||||
mappingkey 0.0980392172933 2 25 79 255
|
||||
mappingkey 0.101960785687 2 26 81 255
|
||||
mappingkey 0.105882354081 2 27 82 255
|
||||
mappingkey 0.109803922474 3 28 84 255
|
||||
mappingkey 0.113725490868 3 29 85 255
|
||||
mappingkey 0.117647059262 3 30 87 255
|
||||
mappingkey 0.121568627656 3 31 88 255
|
||||
mappingkey 0.1254902035 4 32 90 255
|
||||
mappingkey 0.129411771894 4 33 91 255
|
||||
mappingkey 0.133333340287 4 34 93 255
|
||||
mappingkey 0.137254908681 4 35 94 255
|
||||
mappingkey 0.141176477075 5 36 95 255
|
||||
mappingkey 0.145098045468 5 37 97 255
|
||||
mappingkey 0.149019613862 5 38 98 255
|
||||
mappingkey 0.152941182256 5 39 99 255
|
||||
mappingkey 0.156862750649 6 40 100 255
|
||||
mappingkey 0.160784319043 6 41 102 255
|
||||
mappingkey 0.164705887437 6 42 103 255
|
||||
mappingkey 0.168627455831 7 43 104 255
|
||||
mappingkey 0.172549024224 7 44 105 255
|
||||
mappingkey 0.176470592618 7 45 107 255
|
||||
mappingkey 0.180392161012 8 46 108 255
|
||||
mappingkey 0.184313729405 8 47 109 255
|
||||
mappingkey 0.188235297799 9 48 110 255
|
||||
mappingkey 0.192156866193 9 49 111 255
|
||||
mappingkey 0.196078434587 9 50 112 255
|
||||
mappingkey 0.20000000298 10 51 114 255
|
||||
mappingkey 0.203921571374 10 52 115 255
|
||||
mappingkey 0.207843139768 11 53 116 255
|
||||
mappingkey 0.211764708161 11 54 117 255
|
||||
mappingkey 0.215686276555 11 55 118 255
|
||||
mappingkey 0.219607844949 12 56 119 255
|
||||
mappingkey 0.223529413342 12 57 120 255
|
||||
mappingkey 0.227450981736 13 58 121 255
|
||||
mappingkey 0.23137255013 13 59 122 255
|
||||
mappingkey 0.235294118524 14 60 123 255
|
||||
mappingkey 0.239215686917 14 61 124 255
|
||||
mappingkey 0.243137255311 15 62 125 255
|
||||
mappingkey 0.247058823705 15 63 126 255
|
||||
mappingkey 0.250980407 16 64 127 255
|
||||
mappingkey 0.254901975393 16 65 128 255
|
||||
mappingkey 0.258823543787 17 66 129 255
|
||||
mappingkey 0.262745112181 17 67 130 255
|
||||
mappingkey 0.266666680574 18 68 131 255
|
||||
mappingkey 0.270588248968 18 69 132 255
|
||||
mappingkey 0.274509817362 19 70 133 255
|
||||
mappingkey 0.278431385756 19 71 134 255
|
||||
mappingkey 0.282352954149 20 72 135 255
|
||||
mappingkey 0.286274522543 20 73 136 255
|
||||
mappingkey 0.290196090937 21 74 137 255
|
||||
mappingkey 0.29411765933 22 75 138 255
|
||||
mappingkey 0.298039227724 22 76 139 255
|
||||
mappingkey 0.301960796118 23 77 140 255
|
||||
mappingkey 0.305882364511 23 78 141 255
|
||||
mappingkey 0.309803932905 24 79 141 255
|
||||
mappingkey 0.313725501299 25 80 142 255
|
||||
mappingkey 0.317647069693 25 81 143 255
|
||||
mappingkey 0.321568638086 26 82 144 255
|
||||
mappingkey 0.32549020648 27 83 145 255
|
||||
mappingkey 0.329411774874 27 84 146 255
|
||||
mappingkey 0.333333343267 28 85 147 255
|
||||
mappingkey 0.337254911661 29 86 148 255
|
||||
mappingkey 0.341176480055 29 87 148 255
|
||||
mappingkey 0.345098048449 30 88 149 255
|
||||
mappingkey 0.349019616842 31 89 150 255
|
||||
mappingkey 0.352941185236 31 90 151 255
|
||||
mappingkey 0.35686275363 32 91 152 255
|
||||
mappingkey 0.360784322023 33 92 153 255
|
||||
mappingkey 0.364705890417 33 93 153 255
|
||||
mappingkey 0.368627458811 34 94 154 255
|
||||
mappingkey 0.372549027205 35 95 155 255
|
||||
mappingkey 0.376470595598 36 96 156 255
|
||||
mappingkey 0.380392163992 36 97 157 255
|
||||
mappingkey 0.384313732386 37 98 158 255
|
||||
mappingkey 0.388235300779 38 99 158 255
|
||||
mappingkey 0.392156869173 39 100 159 255
|
||||
mappingkey 0.396078437567 40 101 160 255
|
||||
mappingkey 0.40000000596 40 102 161 255
|
||||
mappingkey 0.403921574354 41 103 162 255
|
||||
mappingkey 0.407843142748 42 104 162 255
|
||||
mappingkey 0.411764711142 43 105 163 255
|
||||
mappingkey 0.415686279535 44 106 164 255
|
||||
mappingkey 0.419607847929 44 107 165 255
|
||||
mappingkey 0.423529416323 45 108 165 255
|
||||
mappingkey 0.427450984716 46 109 166 255
|
||||
mappingkey 0.43137255311 47 110 167 255
|
||||
mappingkey 0.435294121504 48 111 168 255
|
||||
mappingkey 0.439215689898 49 112 168 255
|
||||
mappingkey 0.443137258291 50 113 169 255
|
||||
mappingkey 0.447058826685 50 114 170 255
|
||||
mappingkey 0.450980395079 51 115 171 255
|
||||
mappingkey 0.454901963472 52 116 171 255
|
||||
mappingkey 0.458823531866 53 117 172 255
|
||||
mappingkey 0.46274510026 54 118 173 255
|
||||
mappingkey 0.466666668653 55 119 174 255
|
||||
mappingkey 0.470588237047 56 120 174 255
|
||||
mappingkey 0.474509805441 57 121 175 255
|
||||
mappingkey 0.478431373835 58 122 176 255
|
||||
mappingkey 0.482352942228 59 123 177 255
|
||||
mappingkey 0.486274510622 60 124 177 255
|
||||
mappingkey 0.490196079016 61 125 178 255
|
||||
mappingkey 0.494117647409 62 126 179 255
|
||||
mappingkey 0.498039215803 63 127 179 255
|
||||
mappingkey 0.501960813999 64 128 180 255
|
||||
mappingkey 0.505882382393 65 129 181 255
|
||||
mappingkey 0.509803950787 66 130 182 255
|
||||
mappingkey 0.51372551918 67 131 182 255
|
||||
mappingkey 0.517647087574 68 132 183 255
|
||||
mappingkey 0.521568655968 69 133 184 255
|
||||
mappingkey 0.525490224361 70 134 184 255
|
||||
mappingkey 0.529411792755 71 135 185 255
|
||||
mappingkey 0.533333361149 72 136 186 255
|
||||
mappingkey 0.537254929543 73 137 186 255
|
||||
mappingkey 0.541176497936 74 138 187 255
|
||||
mappingkey 0.54509806633 75 139 188 255
|
||||
mappingkey 0.549019634724 76 140 188 255
|
||||
mappingkey 0.552941203117 77 141 189 255
|
||||
mappingkey 0.556862771511 79 142 190 255
|
||||
mappingkey 0.560784339905 80 143 190 255
|
||||
mappingkey 0.564705908298 81 144 191 255
|
||||
mappingkey 0.568627476692 82 145 192 255
|
||||
mappingkey 0.572549045086 83 146 192 255
|
||||
mappingkey 0.57647061348 84 147 193 255
|
||||
mappingkey 0.580392181873 85 148 194 255
|
||||
mappingkey 0.584313750267 87 149 194 255
|
||||
mappingkey 0.588235318661 88 150 195 255
|
||||
mappingkey 0.592156887054 89 151 196 255
|
||||
mappingkey 0.596078455448 90 152 196 255
|
||||
mappingkey 0.600000023842 91 153 197 255
|
||||
mappingkey 0.603921592236 93 154 198 255
|
||||
mappingkey 0.607843160629 94 155 198 255
|
||||
mappingkey 0.611764729023 95 156 199 255
|
||||
mappingkey 0.615686297417 96 157 200 255
|
||||
mappingkey 0.61960786581 97 158 200 255
|
||||
mappingkey 0.623529434204 99 159 201 255
|
||||
mappingkey 0.627451002598 100 160 201 255
|
||||
mappingkey 0.631372570992 101 161 202 255
|
||||
mappingkey 0.635294139385 102 162 203 255
|
||||
mappingkey 0.639215707779 104 163 203 255
|
||||
mappingkey 0.643137276173 105 164 204 255
|
||||
mappingkey 0.647058844566 106 165 205 255
|
||||
mappingkey 0.65098041296 108 166 205 255
|
||||
mappingkey 0.654901981354 109 167 206 255
|
||||
mappingkey 0.658823549747 110 168 206 255
|
||||
mappingkey 0.662745118141 112 169 207 255
|
||||
mappingkey 0.666666686535 113 170 208 255
|
||||
mappingkey 0.670588254929 114 171 208 255
|
||||
mappingkey 0.674509823322 116 172 209 255
|
||||
mappingkey 0.678431391716 117 173 210 255
|
||||
mappingkey 0.68235296011 118 174 210 255
|
||||
mappingkey 0.686274528503 120 175 211 255
|
||||
mappingkey 0.690196096897 121 176 211 255
|
||||
mappingkey 0.694117665291 122 177 212 255
|
||||
mappingkey 0.698039233685 124 178 213 255
|
||||
mappingkey 0.701960802078 125 179 213 255
|
||||
mappingkey 0.705882370472 127 180 214 255
|
||||
mappingkey 0.709803938866 128 181 214 255
|
||||
mappingkey 0.713725507259 129 182 215 255
|
||||
mappingkey 0.717647075653 131 183 216 255
|
||||
mappingkey 0.721568644047 132 184 216 255
|
||||
mappingkey 0.72549021244 134 185 217 255
|
||||
mappingkey 0.729411780834 135 186 217 255
|
||||
mappingkey 0.733333349228 137 187 218 255
|
||||
mappingkey 0.737254917622 138 188 218 255
|
||||
mappingkey 0.741176486015 140 189 219 255
|
||||
mappingkey 0.745098054409 141 190 220 255
|
||||
mappingkey 0.749019622803 143 191 220 255
|
||||
mappingkey 0.752941191196 144 192 221 255
|
||||
mappingkey 0.75686275959 146 193 221 255
|
||||
mappingkey 0.760784327984 147 194 222 255
|
||||
mappingkey 0.764705896378 149 195 222 255
|
||||
mappingkey 0.768627464771 150 196 223 255
|
||||
mappingkey 0.772549033165 152 197 224 255
|
||||
mappingkey 0.776470601559 153 198 224 255
|
||||
mappingkey 0.780392169952 155 199 225 255
|
||||
mappingkey 0.784313738346 156 200 225 255
|
||||
mappingkey 0.78823530674 158 201 226 255
|
||||
mappingkey 0.792156875134 160 202 226 255
|
||||
mappingkey 0.796078443527 161 203 227 255
|
||||
mappingkey 0.800000011921 163 204 228 255
|
||||
mappingkey 0.803921580315 164 205 228 255
|
||||
mappingkey 0.807843148708 166 206 229 255
|
||||
mappingkey 0.811764717102 168 207 229 255
|
||||
mappingkey 0.815686285496 169 208 230 255
|
||||
mappingkey 0.819607853889 171 209 230 255
|
||||
mappingkey 0.823529422283 172 210 231 255
|
||||
mappingkey 0.827450990677 174 211 231 255
|
||||
mappingkey 0.831372559071 176 212 232 255
|
||||
mappingkey 0.835294127464 177 213 233 255
|
||||
mappingkey 0.839215695858 179 214 233 255
|
||||
mappingkey 0.843137264252 181 215 234 255
|
||||
mappingkey 0.847058832645 182 216 234 255
|
||||
mappingkey 0.850980401039 184 217 235 255
|
||||
mappingkey 0.854901969433 186 218 235 255
|
||||
mappingkey 0.858823537827 188 219 236 255
|
||||
mappingkey 0.86274510622 189 220 236 255
|
||||
mappingkey 0.866666674614 191 221 237 255
|
||||
mappingkey 0.870588243008 193 222 237 255
|
||||
mappingkey 0.874509811401 195 223 238 255
|
||||
mappingkey 0.878431379795 196 224 238 255
|
||||
mappingkey 0.882352948189 198 225 239 255
|
||||
mappingkey 0.886274516582 200 226 240 255
|
||||
mappingkey 0.890196084976 202 227 240 255
|
||||
mappingkey 0.89411765337 203 228 241 255
|
||||
mappingkey 0.898039221764 205 229 241 255
|
||||
mappingkey 0.901960790157 207 230 242 255
|
||||
mappingkey 0.905882358551 209 231 242 255
|
||||
mappingkey 0.909803926945 211 232 243 255
|
||||
mappingkey 0.913725495338 212 233 243 255
|
||||
mappingkey 0.917647063732 214 234 244 255
|
||||
mappingkey 0.921568632126 216 235 244 255
|
||||
mappingkey 0.92549020052 218 236 245 255
|
||||
mappingkey 0.929411768913 220 237 245 255
|
||||
mappingkey 0.933333337307 222 238 246 255
|
||||
mappingkey 0.937254905701 224 239 246 255
|
||||
mappingkey 0.941176474094 225 240 247 255
|
||||
mappingkey 0.945098042488 227 241 247 255
|
||||
mappingkey 0.949019610882 229 242 248 255
|
||||
mappingkey 0.952941179276 231 243 248 255
|
||||
mappingkey 0.956862747669 233 244 249 255
|
||||
mappingkey 0.960784316063 235 245 249 255
|
||||
mappingkey 0.964705884457 237 246 250 255
|
||||
mappingkey 0.96862745285 239 247 250 255
|
||||
mappingkey 0.972549021244 241 248 251 255
|
||||
mappingkey 0.976470589638 243 249 251 255
|
||||
mappingkey 0.980392158031 245 250 252 255
|
||||
mappingkey 0.984313726425 247 251 252 255
|
||||
mappingkey 0.988235294819 249 252 253 255
|
||||
mappingkey 0.992156863213 251 253 253 255
|
||||
mappingkey 0.996078431606 253 254 254 255
|
||||
mappingkey 1.0 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0.0 0 0 0 255
|
||||
mappingkey 0.00392156885937 1 1 0 255
|
||||
mappingkey 0.00784313771874 2 2 0 255
|
||||
mappingkey 0.0117647061124 3 3 0 255
|
||||
mappingkey 0.0156862754375 4 4 0 255
|
||||
mappingkey 0.0196078438312 5 5 0 255
|
||||
mappingkey 0.0235294122249 6 6 0 255
|
||||
mappingkey 0.0274509806186 7 7 0 255
|
||||
mappingkey 0.0313725508749 8 8 0 255
|
||||
mappingkey 0.0352941192687 9 9 0 255
|
||||
mappingkey 0.0392156876624 10 10 0 255
|
||||
mappingkey 0.0431372560561 11 11 0 255
|
||||
mappingkey 0.0470588244498 12 12 0 255
|
||||
mappingkey 0.0509803928435 13 13 0 255
|
||||
mappingkey 0.0549019612372 14 14 0 255
|
||||
mappingkey 0.0588235296309 15 15 0 255
|
||||
mappingkey 0.0627451017499 16 16 0 255
|
||||
mappingkey 0.0666666701436 17 17 0 255
|
||||
mappingkey 0.0705882385373 18 18 0 255
|
||||
mappingkey 0.074509806931 19 19 0 255
|
||||
mappingkey 0.0784313753247 20 20 0 255
|
||||
mappingkey 0.0823529437184 21 21 0 255
|
||||
mappingkey 0.0862745121121 22 22 0 255
|
||||
mappingkey 0.0901960805058 23 23 0 255
|
||||
mappingkey 0.0941176488996 24 24 0 255
|
||||
mappingkey 0.0980392172933 25 25 0 255
|
||||
mappingkey 0.101960785687 26 26 0 255
|
||||
mappingkey 0.105882354081 27 27 0 255
|
||||
mappingkey 0.109803922474 28 28 0 255
|
||||
mappingkey 0.113725490868 29 29 0 255
|
||||
mappingkey 0.117647059262 30 30 0 255
|
||||
mappingkey 0.121568627656 31 31 0 255
|
||||
mappingkey 0.1254902035 32 32 0 255
|
||||
mappingkey 0.129411771894 33 33 0 255
|
||||
mappingkey 0.133333340287 34 34 0 255
|
||||
mappingkey 0.137254908681 35 35 0 255
|
||||
mappingkey 0.141176477075 36 36 0 255
|
||||
mappingkey 0.145098045468 37 37 0 255
|
||||
mappingkey 0.149019613862 38 38 0 255
|
||||
mappingkey 0.152941182256 39 39 0 255
|
||||
mappingkey 0.156862750649 40 40 0 255
|
||||
mappingkey 0.160784319043 41 41 0 255
|
||||
mappingkey 0.164705887437 42 42 0 255
|
||||
mappingkey 0.168627455831 43 43 0 255
|
||||
mappingkey 0.172549024224 44 44 0 255
|
||||
mappingkey 0.176470592618 45 45 0 255
|
||||
mappingkey 0.180392161012 46 46 0 255
|
||||
mappingkey 0.184313729405 47 47 0 255
|
||||
mappingkey 0.188235297799 48 48 0 255
|
||||
mappingkey 0.192156866193 49 49 0 255
|
||||
mappingkey 0.196078434587 50 50 0 255
|
||||
mappingkey 0.20000000298 51 51 0 255
|
||||
mappingkey 0.203921571374 52 52 0 255
|
||||
mappingkey 0.207843139768 53 53 0 255
|
||||
mappingkey 0.211764708161 54 54 0 255
|
||||
mappingkey 0.215686276555 55 55 0 255
|
||||
mappingkey 0.219607844949 56 56 0 255
|
||||
mappingkey 0.223529413342 57 57 0 255
|
||||
mappingkey 0.227450981736 58 58 0 255
|
||||
mappingkey 0.23137255013 59 59 0 255
|
||||
mappingkey 0.235294118524 60 60 0 255
|
||||
mappingkey 0.239215686917 61 61 0 255
|
||||
mappingkey 0.243137255311 62 62 0 255
|
||||
mappingkey 0.247058823705 63 63 0 255
|
||||
mappingkey 0.250980407 64 64 0 255
|
||||
mappingkey 0.254901975393 65 65 0 255
|
||||
mappingkey 0.258823543787 66 66 0 255
|
||||
mappingkey 0.262745112181 67 67 0 255
|
||||
mappingkey 0.266666680574 68 68 0 255
|
||||
mappingkey 0.270588248968 69 69 0 255
|
||||
mappingkey 0.274509817362 70 70 0 255
|
||||
mappingkey 0.278431385756 71 71 0 255
|
||||
mappingkey 0.282352954149 72 72 0 255
|
||||
mappingkey 0.286274522543 73 73 0 255
|
||||
mappingkey 0.290196090937 74 74 0 255
|
||||
mappingkey 0.29411765933 75 75 0 255
|
||||
mappingkey 0.298039227724 76 76 0 255
|
||||
mappingkey 0.301960796118 77 77 0 255
|
||||
mappingkey 0.305882364511 78 78 0 255
|
||||
mappingkey 0.309803932905 79 79 0 255
|
||||
mappingkey 0.313725501299 80 80 0 255
|
||||
mappingkey 0.317647069693 81 81 0 255
|
||||
mappingkey 0.321568638086 82 82 0 255
|
||||
mappingkey 0.32549020648 83 83 0 255
|
||||
mappingkey 0.329411774874 84 84 0 255
|
||||
mappingkey 0.333333343267 85 85 0 255
|
||||
mappingkey 0.337254911661 86 86 0 255
|
||||
mappingkey 0.341176480055 87 87 0 255
|
||||
mappingkey 0.345098048449 88 88 0 255
|
||||
mappingkey 0.349019616842 89 89 0 255
|
||||
mappingkey 0.352941185236 90 90 0 255
|
||||
mappingkey 0.35686275363 91 91 0 255
|
||||
mappingkey 0.360784322023 92 92 0 255
|
||||
mappingkey 0.364705890417 93 93 0 255
|
||||
mappingkey 0.368627458811 94 94 0 255
|
||||
mappingkey 0.372549027205 95 95 0 255
|
||||
mappingkey 0.376470595598 96 96 0 255
|
||||
mappingkey 0.380392163992 97 97 0 255
|
||||
mappingkey 0.384313732386 98 98 0 255
|
||||
mappingkey 0.388235300779 99 99 0 255
|
||||
mappingkey 0.392156869173 100 100 0 255
|
||||
mappingkey 0.396078437567 101 101 0 255
|
||||
mappingkey 0.40000000596 102 102 0 255
|
||||
mappingkey 0.403921574354 103 103 0 255
|
||||
mappingkey 0.407843142748 104 104 0 255
|
||||
mappingkey 0.411764711142 105 105 0 255
|
||||
mappingkey 0.415686279535 106 106 0 255
|
||||
mappingkey 0.419607847929 107 107 0 255
|
||||
mappingkey 0.423529416323 108 108 0 255
|
||||
mappingkey 0.427450984716 109 109 0 255
|
||||
mappingkey 0.43137255311 110 110 0 255
|
||||
mappingkey 0.435294121504 111 111 0 255
|
||||
mappingkey 0.439215689898 112 112 0 255
|
||||
mappingkey 0.443137258291 113 113 0 255
|
||||
mappingkey 0.447058826685 114 114 0 255
|
||||
mappingkey 0.450980395079 115 115 0 255
|
||||
mappingkey 0.454901963472 116 116 0 255
|
||||
mappingkey 0.458823531866 117 117 0 255
|
||||
mappingkey 0.46274510026 118 118 0 255
|
||||
mappingkey 0.466666668653 119 119 0 255
|
||||
mappingkey 0.470588237047 120 120 0 255
|
||||
mappingkey 0.474509805441 121 121 0 255
|
||||
mappingkey 0.478431373835 122 122 0 255
|
||||
mappingkey 0.482352942228 123 123 0 255
|
||||
mappingkey 0.486274510622 124 124 0 255
|
||||
mappingkey 0.490196079016 125 125 0 255
|
||||
mappingkey 0.494117647409 126 126 0 255
|
||||
mappingkey 0.498039215803 127 127 0 255
|
||||
mappingkey 0.501960813999 128 128 0 255
|
||||
mappingkey 0.505882382393 129 129 0 255
|
||||
mappingkey 0.509803950787 130 130 0 255
|
||||
mappingkey 0.51372551918 131 131 0 255
|
||||
mappingkey 0.517647087574 132 132 0 255
|
||||
mappingkey 0.521568655968 133 133 0 255
|
||||
mappingkey 0.525490224361 134 134 0 255
|
||||
mappingkey 0.529411792755 135 135 0 255
|
||||
mappingkey 0.533333361149 136 136 0 255
|
||||
mappingkey 0.537254929543 137 137 0 255
|
||||
mappingkey 0.541176497936 138 138 0 255
|
||||
mappingkey 0.54509806633 139 139 0 255
|
||||
mappingkey 0.549019634724 140 140 0 255
|
||||
mappingkey 0.552941203117 141 141 0 255
|
||||
mappingkey 0.556862771511 142 142 0 255
|
||||
mappingkey 0.560784339905 143 143 0 255
|
||||
mappingkey 0.564705908298 144 144 0 255
|
||||
mappingkey 0.568627476692 145 145 0 255
|
||||
mappingkey 0.572549045086 146 146 0 255
|
||||
mappingkey 0.57647061348 147 147 0 255
|
||||
mappingkey 0.580392181873 148 148 0 255
|
||||
mappingkey 0.584313750267 149 149 0 255
|
||||
mappingkey 0.588235318661 150 150 0 255
|
||||
mappingkey 0.592156887054 151 151 0 255
|
||||
mappingkey 0.596078455448 152 152 0 255
|
||||
mappingkey 0.600000023842 153 153 0 255
|
||||
mappingkey 0.603921592236 154 154 0 255
|
||||
mappingkey 0.607843160629 155 155 0 255
|
||||
mappingkey 0.611764729023 156 156 0 255
|
||||
mappingkey 0.615686297417 157 157 0 255
|
||||
mappingkey 0.61960786581 158 158 0 255
|
||||
mappingkey 0.623529434204 159 159 0 255
|
||||
mappingkey 0.627451002598 160 160 0 255
|
||||
mappingkey 0.631372570992 161 161 0 255
|
||||
mappingkey 0.635294139385 162 162 0 255
|
||||
mappingkey 0.639215707779 163 163 0 255
|
||||
mappingkey 0.643137276173 164 164 0 255
|
||||
mappingkey 0.647058844566 165 165 0 255
|
||||
mappingkey 0.65098041296 166 166 0 255
|
||||
mappingkey 0.654901981354 167 167 0 255
|
||||
mappingkey 0.658823549747 168 168 0 255
|
||||
mappingkey 0.662745118141 169 169 0 255
|
||||
mappingkey 0.666666686535 170 170 0 255
|
||||
mappingkey 0.670588254929 171 171 0 255
|
||||
mappingkey 0.674509823322 172 172 0 255
|
||||
mappingkey 0.678431391716 173 173 0 255
|
||||
mappingkey 0.68235296011 174 174 0 255
|
||||
mappingkey 0.686274528503 175 175 0 255
|
||||
mappingkey 0.690196096897 176 176 0 255
|
||||
mappingkey 0.694117665291 177 177 0 255
|
||||
mappingkey 0.698039233685 178 178 0 255
|
||||
mappingkey 0.701960802078 179 179 0 255
|
||||
mappingkey 0.705882370472 180 180 0 255
|
||||
mappingkey 0.709803938866 181 181 0 255
|
||||
mappingkey 0.713725507259 182 182 0 255
|
||||
mappingkey 0.717647075653 183 183 0 255
|
||||
mappingkey 0.721568644047 184 184 0 255
|
||||
mappingkey 0.72549021244 185 185 0 255
|
||||
mappingkey 0.729411780834 186 186 0 255
|
||||
mappingkey 0.733333349228 187 187 0 255
|
||||
mappingkey 0.737254917622 188 188 0 255
|
||||
mappingkey 0.741176486015 189 189 0 255
|
||||
mappingkey 0.745098054409 190 190 0 255
|
||||
mappingkey 0.749019622803 191 191 1 255
|
||||
mappingkey 0.752941191196 192 192 3 255
|
||||
mappingkey 0.75686275959 193 193 5 255
|
||||
mappingkey 0.760784327984 194 194 7 255
|
||||
mappingkey 0.764705896378 195 195 9 255
|
||||
mappingkey 0.768627464771 196 196 11 255
|
||||
mappingkey 0.772549033165 197 197 13 255
|
||||
mappingkey 0.776470601559 198 198 15 255
|
||||
mappingkey 0.780392169952 199 199 17 255
|
||||
mappingkey 0.784313738346 200 200 19 255
|
||||
mappingkey 0.78823530674 201 201 21 255
|
||||
mappingkey 0.792156875134 202 202 23 255
|
||||
mappingkey 0.796078443527 203 203 25 255
|
||||
mappingkey 0.800000011921 204 204 27 255
|
||||
mappingkey 0.803921580315 205 205 29 255
|
||||
mappingkey 0.807843148708 206 206 31 255
|
||||
mappingkey 0.811764717102 207 207 33 255
|
||||
mappingkey 0.815686285496 208 208 35 255
|
||||
mappingkey 0.819607853889 209 209 37 255
|
||||
mappingkey 0.823529422283 210 210 39 255
|
||||
mappingkey 0.827450990677 211 211 41 255
|
||||
mappingkey 0.831372559071 212 212 43 255
|
||||
mappingkey 0.835294127464 213 213 45 255
|
||||
mappingkey 0.839215695858 214 214 47 255
|
||||
mappingkey 0.843137264252 215 215 49 255
|
||||
mappingkey 0.847058832645 216 216 51 255
|
||||
mappingkey 0.850980401039 217 217 52 255
|
||||
mappingkey 0.854901969433 218 218 54 255
|
||||
mappingkey 0.858823537827 219 219 56 255
|
||||
mappingkey 0.86274510622 220 220 58 255
|
||||
mappingkey 0.866666674614 221 221 60 255
|
||||
mappingkey 0.870588243008 222 222 62 255
|
||||
mappingkey 0.874509811401 223 223 64 255
|
||||
mappingkey 0.878431379795 224 224 66 255
|
||||
mappingkey 0.882352948189 225 225 68 255
|
||||
mappingkey 0.886274516582 226 226 70 255
|
||||
mappingkey 0.890196084976 227 227 72 255
|
||||
mappingkey 0.89411765337 228 228 74 255
|
||||
mappingkey 0.898039221764 229 229 76 255
|
||||
mappingkey 0.901960790157 230 230 78 255
|
||||
mappingkey 0.905882358551 231 231 80 255
|
||||
mappingkey 0.909803926945 232 232 82 255
|
||||
mappingkey 0.913725495338 233 233 84 255
|
||||
mappingkey 0.917647063732 234 234 86 255
|
||||
mappingkey 0.921568632126 235 235 88 255
|
||||
mappingkey 0.92549020052 236 236 90 255
|
||||
mappingkey 0.929411768913 237 237 92 255
|
||||
mappingkey 0.933333337307 238 238 94 255
|
||||
mappingkey 0.937254905701 239 239 96 255
|
||||
mappingkey 0.941176474094 240 240 98 255
|
||||
mappingkey 0.945098042488 241 241 100 255
|
||||
mappingkey 0.949019610882 242 242 102 255
|
||||
mappingkey 0.952941179276 243 243 103 255
|
||||
mappingkey 0.956862747669 244 244 105 255
|
||||
mappingkey 0.960784316063 245 245 107 255
|
||||
mappingkey 0.964705884457 246 246 109 255
|
||||
mappingkey 0.96862745285 247 247 111 255
|
||||
mappingkey 0.972549021244 248 248 113 255
|
||||
mappingkey 0.976470589638 249 249 115 255
|
||||
mappingkey 0.980392158031 250 250 117 255
|
||||
mappingkey 0.984313726425 251 251 119 255
|
||||
mappingkey 0.988235294819 252 252 121 255
|
||||
mappingkey 0.992156863213 253 253 123 255
|
||||
mappingkey 0.996078431606 254 254 125 255
|
||||
mappingkey 1.0 255 255 127 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0.0 0 0 0 255
|
||||
mappingkey 0.00392156885937 0 0 0 255
|
||||
mappingkey 0.00784313771874 0 0 0 255
|
||||
mappingkey 0.0117647061124 0 0 0 255
|
||||
mappingkey 0.0156862754375 0 0 0 255
|
||||
mappingkey 0.0196078438312 0 0 0 255
|
||||
mappingkey 0.0235294122249 0 0 0 255
|
||||
mappingkey 0.0274509806186 0 0 0 255
|
||||
mappingkey 0.0313725508749 0 0 0 255
|
||||
mappingkey 0.0352941192687 0 0 0 255
|
||||
mappingkey 0.0392156876624 0 0 0 255
|
||||
mappingkey 0.0431372560561 0 0 0 255
|
||||
mappingkey 0.0470588244498 0 0 0 255
|
||||
mappingkey 0.0509803928435 0 0 0 255
|
||||
mappingkey 0.0549019612372 0 0 0 255
|
||||
mappingkey 0.0588235296309 0 0 0 255
|
||||
mappingkey 0.0627451017499 0 0 0 255
|
||||
mappingkey 0.0666666701436 0 0 0 255
|
||||
mappingkey 0.0705882385373 0 0 0 255
|
||||
mappingkey 0.074509806931 0 0 0 255
|
||||
mappingkey 0.0784313753247 0 0 0 255
|
||||
mappingkey 0.0823529437184 0 1 0 255
|
||||
mappingkey 0.0862745121121 0 4 0 255
|
||||
mappingkey 0.0901960805058 0 5 0 255
|
||||
mappingkey 0.0941176488996 0 6 0 255
|
||||
mappingkey 0.0980392172933 0 8 0 255
|
||||
mappingkey 0.101960785687 0 11 0 255
|
||||
mappingkey 0.105882354081 0 12 0 255
|
||||
mappingkey 0.109803922474 0 15 0 255
|
||||
mappingkey 0.113725490868 0 16 0 255
|
||||
mappingkey 0.117647059262 0 19 0 255
|
||||
mappingkey 0.121568627656 0 19 0 255
|
||||
mappingkey 0.1254902035 0 21 0 255
|
||||
mappingkey 0.129411771894 0 23 0 255
|
||||
mappingkey 0.133333340287 0 25 0 255
|
||||
mappingkey 0.137254908681 0 26 0 255
|
||||
mappingkey 0.141176477075 0 28 0 255
|
||||
mappingkey 0.145098045468 0 31 0 255
|
||||
mappingkey 0.149019613862 0 32 0 255
|
||||
mappingkey 0.152941182256 0 33 0 255
|
||||
mappingkey 0.156862750649 0 34 0 255
|
||||
mappingkey 0.160784319043 0 36 0 255
|
||||
mappingkey 0.164705887437 0 37 0 255
|
||||
mappingkey 0.168627455831 0 39 0 255
|
||||
mappingkey 0.172549024224 0 42 0 255
|
||||
mappingkey 0.176470592618 0 43 0 255
|
||||
mappingkey 0.180392161012 0 44 0 255
|
||||
mappingkey 0.184313729405 0 45 0 255
|
||||
mappingkey 0.188235297799 0 47 0 255
|
||||
mappingkey 0.192156866193 0 48 0 255
|
||||
mappingkey 0.196078434587 0 49 0 255
|
||||
mappingkey 0.20000000298 0 51 0 255
|
||||
mappingkey 0.203921571374 0 53 0 255
|
||||
mappingkey 0.207843139768 0 54 0 255
|
||||
mappingkey 0.211764708161 0 55 0 255
|
||||
mappingkey 0.215686276555 0 58 0 255
|
||||
mappingkey 0.219607844949 0 58 0 255
|
||||
mappingkey 0.223529413342 0 59 0 255
|
||||
mappingkey 0.227450981736 0 60 0 255
|
||||
mappingkey 0.23137255013 0 62 0 255
|
||||
mappingkey 0.235294118524 0 64 0 255
|
||||
mappingkey 0.239215686917 0 65 0 255
|
||||
mappingkey 0.243137255311 0 66 0 255
|
||||
mappingkey 0.247058823705 0 67 0 255
|
||||
mappingkey 0.250980407 0 69 0 255
|
||||
mappingkey 0.254901975393 0 70 0 255
|
||||
mappingkey 0.258823543787 0 70 0 255
|
||||
mappingkey 0.262745112181 0 72 0 255
|
||||
mappingkey 0.266666680574 0 73 0 255
|
||||
mappingkey 0.270588248968 0 75 0 255
|
||||
mappingkey 0.274509817362 0 76 0 255
|
||||
mappingkey 0.278431385756 0 77 0 255
|
||||
mappingkey 0.282352954149 0 78 0 255
|
||||
mappingkey 0.286274522543 0 80 0 255
|
||||
mappingkey 0.290196090937 0 82 0 255
|
||||
mappingkey 0.29411765933 0 83 0 255
|
||||
mappingkey 0.298039227724 0 83 0 255
|
||||
mappingkey 0.301960796118 0 84 0 255
|
||||
mappingkey 0.305882364511 0 86 0 255
|
||||
mappingkey 0.309803932905 0 87 0 255
|
||||
mappingkey 0.313725501299 0 88 0 255
|
||||
mappingkey 0.317647069693 0 89 0 255
|
||||
mappingkey 0.321568638086 0 92 0 255
|
||||
mappingkey 0.32549020648 0 93 0 255
|
||||
mappingkey 0.329411774874 0 94 0 255
|
||||
mappingkey 0.333333343267 0 95 0 255
|
||||
mappingkey 0.337254911661 0 97 0 255
|
||||
mappingkey 0.341176480055 0 97 0 255
|
||||
mappingkey 0.345098048449 1 98 0 255
|
||||
mappingkey 0.349019616842 3 99 0 255
|
||||
mappingkey 0.352941185236 4 100 0 255
|
||||
mappingkey 0.35686275363 9 103 0 255
|
||||
mappingkey 0.360784322023 11 104 0 255
|
||||
mappingkey 0.364705890417 12 105 0 255
|
||||
mappingkey 0.368627458811 14 106 0 255
|
||||
mappingkey 0.372549027205 14 106 0 255
|
||||
mappingkey 0.376470595598 17 108 0 255
|
||||
mappingkey 0.380392163992 19 109 0 255
|
||||
mappingkey 0.384313732386 19 109 0 255
|
||||
mappingkey 0.388235300779 20 110 0 255
|
||||
mappingkey 0.392156869173 22 111 0 255
|
||||
mappingkey 0.396078437567 27 114 0 255
|
||||
mappingkey 0.40000000596 29 115 0 255
|
||||
mappingkey 0.403921574354 30 116 0 255
|
||||
mappingkey 0.407843142748 32 117 0 255
|
||||
mappingkey 0.411764711142 32 117 0 255
|
||||
mappingkey 0.415686279535 35 119 0 255
|
||||
mappingkey 0.419607847929 37 120 0 255
|
||||
mappingkey 0.423529416323 38 121 0 255
|
||||
mappingkey 0.427450984716 38 121 0 255
|
||||
mappingkey 0.43137255311 41 123 0 255
|
||||
mappingkey 0.435294121504 45 125 0 255
|
||||
mappingkey 0.439215689898 45 125 0 255
|
||||
mappingkey 0.443137258291 46 126 0 255
|
||||
mappingkey 0.447058826685 48 127 0 255
|
||||
mappingkey 0.450980395079 50 128 0 255
|
||||
mappingkey 0.454901963472 53 130 0 255
|
||||
mappingkey 0.458823531866 54 131 0 255
|
||||
mappingkey 0.46274510026 58 133 0 255
|
||||
mappingkey 0.466666668653 58 133 0 255
|
||||
mappingkey 0.470588237047 59 134 0 255
|
||||
mappingkey 0.474509805441 59 134 0 255
|
||||
mappingkey 0.478431373835 62 136 0 255
|
||||
mappingkey 0.482352942228 64 137 0 255
|
||||
mappingkey 0.486274510622 66 138 0 255
|
||||
mappingkey 0.490196079016 66 138 0 255
|
||||
mappingkey 0.494117647409 67 139 0 255
|
||||
mappingkey 0.498039215803 71 141 0 255
|
||||
mappingkey 0.501960813999 74 143 0 255
|
||||
mappingkey 0.505882382393 75 144 0 255
|
||||
mappingkey 0.509803950787 75 144 0 255
|
||||
mappingkey 0.51372551918 77 145 0 255
|
||||
mappingkey 0.517647087574 80 147 0 255
|
||||
mappingkey 0.521568655968 80 147 0 255
|
||||
mappingkey 0.525490224361 82 148 0 255
|
||||
mappingkey 0.529411792755 82 148 0 255
|
||||
mappingkey 0.533333361149 83 149 0 255
|
||||
mappingkey 0.537254929543 85 150 0 255
|
||||
mappingkey 0.541176497936 90 153 0 255
|
||||
mappingkey 0.54509806633 91 154 0 255
|
||||
mappingkey 0.549019634724 91 154 0 255
|
||||
mappingkey 0.552941203117 93 155 0 255
|
||||
mappingkey 0.556862771511 95 156 0 255
|
||||
mappingkey 0.560784339905 98 158 0 255
|
||||
mappingkey 0.564705908298 100 159 0 255
|
||||
mappingkey 0.568627476692 100 159 0 255
|
||||
mappingkey 0.572549045086 101 160 0 255
|
||||
mappingkey 0.57647061348 101 160 0 255
|
||||
mappingkey 0.580392181873 103 161 0 255
|
||||
mappingkey 0.584313750267 103 161 0 255
|
||||
mappingkey 0.588235318661 108 164 0 255
|
||||
mappingkey 0.592156887054 109 165 0 255
|
||||
mappingkey 0.596078455448 111 166 0 255
|
||||
mappingkey 0.600000023842 112 167 0 255
|
||||
mappingkey 0.603921592236 112 167 0 255
|
||||
mappingkey 0.607843160629 116 169 0 255
|
||||
mappingkey 0.611764729023 117 170 0 255
|
||||
mappingkey 0.615686297417 119 171 0 255
|
||||
mappingkey 0.61960786581 119 171 0 255
|
||||
mappingkey 0.623529434204 121 172 0 255
|
||||
mappingkey 0.627451002598 121 172 0 255
|
||||
mappingkey 0.631372570992 125 175 0 255
|
||||
mappingkey 0.635294139385 125 175 0 255
|
||||
mappingkey 0.639215707779 127 176 0 255
|
||||
mappingkey 0.643137276173 129 177 0 255
|
||||
mappingkey 0.647058844566 130 178 0 255
|
||||
mappingkey 0.65098041296 130 178 0 255
|
||||
mappingkey 0.654901981354 133 180 0 255
|
||||
mappingkey 0.658823549747 135 181 0 255
|
||||
mappingkey 0.662745118141 135 181 0 255
|
||||
mappingkey 0.666666686535 137 182 3 255
|
||||
mappingkey 0.670588254929 140 184 10 255
|
||||
mappingkey 0.674509823322 143 186 17 255
|
||||
mappingkey 0.678431391716 143 186 17 255
|
||||
mappingkey 0.68235296011 143 186 17 255
|
||||
mappingkey 0.686274528503 145 187 20 255
|
||||
mappingkey 0.690196096897 146 188 24 255
|
||||
mappingkey 0.694117665291 146 188 24 255
|
||||
mappingkey 0.698039233685 148 189 27 255
|
||||
mappingkey 0.701960802078 151 191 34 255
|
||||
mappingkey 0.705882370472 151 191 34 255
|
||||
mappingkey 0.709803938866 153 192 37 255
|
||||
mappingkey 0.713725507259 156 194 44 255
|
||||
mappingkey 0.717647075653 158 195 48 255
|
||||
mappingkey 0.721568644047 158 195 48 255
|
||||
mappingkey 0.72549021244 161 197 55 255
|
||||
mappingkey 0.729411780834 163 198 58 255
|
||||
mappingkey 0.733333349228 163 198 58 255
|
||||
mappingkey 0.737254917622 163 198 58 255
|
||||
mappingkey 0.741176486015 164 199 62 255
|
||||
mappingkey 0.745098054409 166 200 65 255
|
||||
mappingkey 0.749019622803 166 200 65 255
|
||||
mappingkey 0.752941191196 169 202 72 255
|
||||
mappingkey 0.75686275959 172 204 79 255
|
||||
mappingkey 0.760784327984 172 204 79 255
|
||||
mappingkey 0.764705896378 174 205 82 255
|
||||
mappingkey 0.768627464771 175 206 86 255
|
||||
mappingkey 0.772549033165 175 206 86 255
|
||||
mappingkey 0.776470601559 179 208 93 255
|
||||
mappingkey 0.780392169952 180 209 96 255
|
||||
mappingkey 0.784313738346 182 210 99 255
|
||||
mappingkey 0.78823530674 182 210 99 255
|
||||
mappingkey 0.792156875134 183 211 103 255
|
||||
mappingkey 0.796078443527 183 211 103 255
|
||||
mappingkey 0.800000011921 183 211 103 255
|
||||
mappingkey 0.803921580315 187 213 110 255
|
||||
mappingkey 0.807843148708 190 215 117 255
|
||||
mappingkey 0.811764717102 190 215 117 255
|
||||
mappingkey 0.815686285496 192 216 120 255
|
||||
mappingkey 0.819607853889 193 217 124 255
|
||||
mappingkey 0.823529422283 193 217 124 255
|
||||
mappingkey 0.827450990677 196 219 130 255
|
||||
mappingkey 0.831372559071 198 220 134 255
|
||||
mappingkey 0.835294127464 198 220 134 255
|
||||
mappingkey 0.839215695858 200 221 137 255
|
||||
mappingkey 0.843137264252 201 222 141 255
|
||||
mappingkey 0.847058832645 201 222 141 255
|
||||
mappingkey 0.850980401039 206 225 151 255
|
||||
mappingkey 0.854901969433 206 225 151 255
|
||||
mappingkey 0.858823537827 206 225 151 255
|
||||
mappingkey 0.86274510622 208 226 155 255
|
||||
mappingkey 0.866666674614 209 227 158 255
|
||||
mappingkey 0.870588243008 209 227 158 255
|
||||
mappingkey 0.874509811401 211 228 161 255
|
||||
mappingkey 0.878431379795 214 230 168 255
|
||||
mappingkey 0.882352948189 214 230 168 255
|
||||
mappingkey 0.886274516582 216 231 172 255
|
||||
mappingkey 0.890196084976 217 232 175 255
|
||||
mappingkey 0.89411765337 217 232 175 255
|
||||
mappingkey 0.898039221764 219 233 179 255
|
||||
mappingkey 0.901960790157 224 236 189 255
|
||||
mappingkey 0.905882358551 224 236 189 255
|
||||
mappingkey 0.909803926945 225 237 192 255
|
||||
mappingkey 0.913725495338 225 237 192 255
|
||||
mappingkey 0.917647063732 225 237 192 255
|
||||
mappingkey 0.921568632126 227 238 196 255
|
||||
mappingkey 0.92549020052 229 239 199 255
|
||||
mappingkey 0.929411768913 229 239 199 255
|
||||
mappingkey 0.933333337307 232 241 206 255
|
||||
mappingkey 0.937254905701 234 242 210 255
|
||||
mappingkey 0.941176474094 234 242 210 255
|
||||
mappingkey 0.945098042488 235 243 213 255
|
||||
mappingkey 0.949019610882 238 245 220 255
|
||||
mappingkey 0.952941179276 238 245 220 255
|
||||
mappingkey 0.956862747669 242 247 227 255
|
||||
mappingkey 0.960784316063 243 248 230 255
|
||||
mappingkey 0.964705884457 243 248 230 255
|
||||
mappingkey 0.96862745285 245 249 234 255
|
||||
mappingkey 0.972549021244 245 249 234 255
|
||||
mappingkey 0.976470589638 245 249 234 255
|
||||
mappingkey 0.980392158031 246 250 237 255
|
||||
mappingkey 0.984313726425 246 250 237 255
|
||||
mappingkey 0.988235294819 250 252 244 255
|
||||
mappingkey 0.992156863213 251 253 248 255
|
||||
mappingkey 0.996078431606 251 253 248 255
|
||||
mappingkey 1.0 255 255 255 255
|
||||
@@ -0,0 +1,259 @@
|
||||
width 256
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
mappingkey 0.0 0 0 0 255
|
||||
mappingkey 0.00392156885937 1 1 0 255
|
||||
mappingkey 0.00784313771874 2 2 0 255
|
||||
mappingkey 0.0117647061124 4 3 0 255
|
||||
mappingkey 0.0156862754375 5 4 0 255
|
||||
mappingkey 0.0196078438312 7 5 0 255
|
||||
mappingkey 0.0235294122249 8 6 0 255
|
||||
mappingkey 0.0274509806186 10 7 0 255
|
||||
mappingkey 0.0313725508749 11 8 0 255
|
||||
mappingkey 0.0352941192687 13 9 0 255
|
||||
mappingkey 0.0392156876624 14 10 0 255
|
||||
mappingkey 0.0431372560561 15 11 0 255
|
||||
mappingkey 0.0470588244498 17 12 0 255
|
||||
mappingkey 0.0509803928435 18 13 0 255
|
||||
mappingkey 0.0549019612372 20 14 0 255
|
||||
mappingkey 0.0588235296309 21 15 0 255
|
||||
mappingkey 0.0627451017499 23 16 0 255
|
||||
mappingkey 0.0666666701436 24 17 0 255
|
||||
mappingkey 0.0705882385373 26 18 0 255
|
||||
mappingkey 0.074509806931 27 19 0 255
|
||||
mappingkey 0.0784313753247 28 20 0 255
|
||||
mappingkey 0.0823529437184 30 21 0 255
|
||||
mappingkey 0.0862745121121 31 22 0 255
|
||||
mappingkey 0.0901960805058 33 23 0 255
|
||||
mappingkey 0.0941176488996 34 24 0 255
|
||||
mappingkey 0.0980392172933 36 25 0 255
|
||||
mappingkey 0.101960785687 37 26 0 255
|
||||
mappingkey 0.105882354081 39 27 0 255
|
||||
mappingkey 0.109803922474 40 28 0 255
|
||||
mappingkey 0.113725490868 42 29 0 255
|
||||
mappingkey 0.117647059262 43 30 0 255
|
||||
mappingkey 0.121568627656 44 31 0 255
|
||||
mappingkey 0.1254902035 46 32 0 255
|
||||
mappingkey 0.129411771894 47 33 0 255
|
||||
mappingkey 0.133333340287 49 34 0 255
|
||||
mappingkey 0.137254908681 50 35 0 255
|
||||
mappingkey 0.141176477075 52 36 0 255
|
||||
mappingkey 0.145098045468 53 37 0 255
|
||||
mappingkey 0.149019613862 55 38 0 255
|
||||
mappingkey 0.152941182256 56 39 0 255
|
||||
mappingkey 0.156862750649 57 40 0 255
|
||||
mappingkey 0.160784319043 59 41 0 255
|
||||
mappingkey 0.164705887437 60 42 0 255
|
||||
mappingkey 0.168627455831 62 43 0 255
|
||||
mappingkey 0.172549024224 63 44 0 255
|
||||
mappingkey 0.176470592618 65 45 0 255
|
||||
mappingkey 0.180392161012 66 46 0 255
|
||||
mappingkey 0.184313729405 68 47 0 255
|
||||
mappingkey 0.188235297799 69 48 0 255
|
||||
mappingkey 0.192156866193 70 49 0 255
|
||||
mappingkey 0.196078434587 72 50 0 255
|
||||
mappingkey 0.20000000298 73 51 0 255
|
||||
mappingkey 0.203921571374 75 52 0 255
|
||||
mappingkey 0.207843139768 76 53 0 255
|
||||
mappingkey 0.211764708161 78 54 0 255
|
||||
mappingkey 0.215686276555 79 55 0 255
|
||||
mappingkey 0.219607844949 81 56 0 255
|
||||
mappingkey 0.223529413342 82 57 0 255
|
||||
mappingkey 0.227450981736 84 58 0 255
|
||||
mappingkey 0.23137255013 85 59 0 255
|
||||
mappingkey 0.235294118524 86 60 0 255
|
||||
mappingkey 0.239215686917 88 61 0 255
|
||||
mappingkey 0.243137255311 89 62 0 255
|
||||
mappingkey 0.247058823705 91 63 0 255
|
||||
mappingkey 0.250980407 92 64 0 255
|
||||
mappingkey 0.254901975393 94 65 0 255
|
||||
mappingkey 0.258823543787 95 66 0 255
|
||||
mappingkey 0.262745112181 97 67 0 255
|
||||
mappingkey 0.266666680574 98 68 0 255
|
||||
mappingkey 0.270588248968 99 69 0 255
|
||||
mappingkey 0.274509817362 101 70 0 255
|
||||
mappingkey 0.278431385756 102 71 0 255
|
||||
mappingkey 0.282352954149 104 72 0 255
|
||||
mappingkey 0.286274522543 105 73 0 255
|
||||
mappingkey 0.290196090937 107 74 0 255
|
||||
mappingkey 0.29411765933 108 75 0 255
|
||||
mappingkey 0.298039227724 110 76 0 255
|
||||
mappingkey 0.301960796118 111 77 0 255
|
||||
mappingkey 0.305882364511 113 78 0 255
|
||||
mappingkey 0.309803932905 114 79 0 255
|
||||
mappingkey 0.313725501299 115 80 0 255
|
||||
mappingkey 0.317647069693 117 81 0 255
|
||||
mappingkey 0.321568638086 118 82 0 255
|
||||
mappingkey 0.32549020648 120 83 0 255
|
||||
mappingkey 0.329411774874 121 84 0 255
|
||||
mappingkey 0.333333343267 123 85 0 255
|
||||
mappingkey 0.337254911661 124 86 0 255
|
||||
mappingkey 0.341176480055 126 87 0 255
|
||||
mappingkey 0.345098048449 127 88 0 255
|
||||
mappingkey 0.349019616842 128 89 0 255
|
||||
mappingkey 0.352941185236 130 90 0 255
|
||||
mappingkey 0.35686275363 131 91 0 255
|
||||
mappingkey 0.360784322023 133 92 0 255
|
||||
mappingkey 0.364705890417 134 93 0 255
|
||||
mappingkey 0.368627458811 136 94 0 255
|
||||
mappingkey 0.372549027205 137 95 0 255
|
||||
mappingkey 0.376470595598 139 96 0 255
|
||||
mappingkey 0.380392163992 140 97 0 255
|
||||
mappingkey 0.384313732386 141 98 0 255
|
||||
mappingkey 0.388235300779 143 99 0 255
|
||||
mappingkey 0.392156869173 144 100 0 255
|
||||
mappingkey 0.396078437567 146 101 0 255
|
||||
mappingkey 0.40000000596 147 102 0 255
|
||||
mappingkey 0.403921574354 149 103 0 255
|
||||
mappingkey 0.407843142748 150 104 0 255
|
||||
mappingkey 0.411764711142 152 105 0 255
|
||||
mappingkey 0.415686279535 153 106 0 255
|
||||
mappingkey 0.419607847929 155 107 0 255
|
||||
mappingkey 0.423529416323 156 108 0 255
|
||||
mappingkey 0.427450984716 157 109 0 255
|
||||
mappingkey 0.43137255311 159 110 0 255
|
||||
mappingkey 0.435294121504 160 111 0 255
|
||||
mappingkey 0.439215689898 162 112 0 255
|
||||
mappingkey 0.443137258291 163 113 0 255
|
||||
mappingkey 0.447058826685 165 114 0 255
|
||||
mappingkey 0.450980395079 166 115 0 255
|
||||
mappingkey 0.454901963472 168 116 0 255
|
||||
mappingkey 0.458823531866 169 117 0 255
|
||||
mappingkey 0.46274510026 170 118 0 255
|
||||
mappingkey 0.466666668653 172 119 0 255
|
||||
mappingkey 0.470588237047 173 120 0 255
|
||||
mappingkey 0.474509805441 175 121 0 255
|
||||
mappingkey 0.478431373835 176 122 0 255
|
||||
mappingkey 0.482352942228 178 123 0 255
|
||||
mappingkey 0.486274510622 179 124 0 255
|
||||
mappingkey 0.490196079016 181 125 0 255
|
||||
mappingkey 0.494117647409 182 126 0 255
|
||||
mappingkey 0.498039215803 184 127 0 255
|
||||
mappingkey 0.501960813999 185 128 0 255
|
||||
mappingkey 0.505882382393 186 129 0 255
|
||||
mappingkey 0.509803950787 188 130 0 255
|
||||
mappingkey 0.51372551918 189 131 0 255
|
||||
mappingkey 0.517647087574 191 132 0 255
|
||||
mappingkey 0.521568655968 192 133 0 255
|
||||
mappingkey 0.525490224361 194 134 0 255
|
||||
mappingkey 0.529411792755 195 135 0 255
|
||||
mappingkey 0.533333361149 197 136 0 255
|
||||
mappingkey 0.537254929543 198 137 0 255
|
||||
mappingkey 0.541176497936 199 138 0 255
|
||||
mappingkey 0.54509806633 201 139 0 255
|
||||
mappingkey 0.549019634724 202 140 0 255
|
||||
mappingkey 0.552941203117 204 141 0 255
|
||||
mappingkey 0.556862771511 205 142 0 255
|
||||
mappingkey 0.560784339905 207 143 0 255
|
||||
mappingkey 0.564705908298 208 144 0 255
|
||||
mappingkey 0.568627476692 210 145 0 255
|
||||
mappingkey 0.572549045086 211 146 0 255
|
||||
mappingkey 0.57647061348 212 147 0 255
|
||||
mappingkey 0.580392181873 214 148 0 255
|
||||
mappingkey 0.584313750267 215 149 0 255
|
||||
mappingkey 0.588235318661 217 150 0 255
|
||||
mappingkey 0.592156887054 218 151 0 255
|
||||
mappingkey 0.596078455448 220 152 0 255
|
||||
mappingkey 0.600000023842 221 153 0 255
|
||||
mappingkey 0.603921592236 223 154 0 255
|
||||
mappingkey 0.607843160629 224 155 0 255
|
||||
mappingkey 0.611764729023 226 156 0 255
|
||||
mappingkey 0.615686297417 227 157 0 255
|
||||
mappingkey 0.61960786581 228 158 0 255
|
||||
mappingkey 0.623529434204 230 159 0 255
|
||||
mappingkey 0.627451002598 231 160 0 255
|
||||
mappingkey 0.631372570992 233 161 0 255
|
||||
mappingkey 0.635294139385 234 162 0 255
|
||||
mappingkey 0.639215707779 236 163 0 255
|
||||
mappingkey 0.643137276173 237 164 0 255
|
||||
mappingkey 0.647058844566 239 165 0 255
|
||||
mappingkey 0.65098041296 240 166 0 255
|
||||
mappingkey 0.654901981354 241 167 0 255
|
||||
mappingkey 0.658823549747 243 168 0 255
|
||||
mappingkey 0.662745118141 244 169 0 255
|
||||
mappingkey 0.666666686535 246 170 0 255
|
||||
mappingkey 0.670588254929 247 171 0 255
|
||||
mappingkey 0.674509823322 249 172 0 255
|
||||
mappingkey 0.678431391716 250 173 0 255
|
||||
mappingkey 0.68235296011 252 174 0 255
|
||||
mappingkey 0.686274528503 253 175 0 255
|
||||
mappingkey 0.690196096897 255 176 0 255
|
||||
mappingkey 0.694117665291 255 177 0 255
|
||||
mappingkey 0.698039233685 255 178 0 255
|
||||
mappingkey 0.701960802078 255 179 0 255
|
||||
mappingkey 0.705882370472 255 180 0 255
|
||||
mappingkey 0.709803938866 255 181 0 255
|
||||
mappingkey 0.713725507259 255 182 0 255
|
||||
mappingkey 0.717647075653 255 183 0 255
|
||||
mappingkey 0.721568644047 255 184 0 255
|
||||
mappingkey 0.72549021244 255 185 0 255
|
||||
mappingkey 0.729411780834 255 186 0 255
|
||||
mappingkey 0.733333349228 255 187 0 255
|
||||
mappingkey 0.737254917622 255 188 0 255
|
||||
mappingkey 0.741176486015 255 189 0 255
|
||||
mappingkey 0.745098054409 255 190 0 255
|
||||
mappingkey 0.749019622803 255 191 3 255
|
||||
mappingkey 0.752941191196 255 192 7 255
|
||||
mappingkey 0.75686275959 255 193 11 255
|
||||
mappingkey 0.760784327984 255 194 15 255
|
||||
mappingkey 0.764705896378 255 195 19 255
|
||||
mappingkey 0.768627464771 255 196 23 255
|
||||
mappingkey 0.772549033165 255 197 27 255
|
||||
mappingkey 0.776470601559 255 198 31 255
|
||||
mappingkey 0.780392169952 255 199 35 255
|
||||
mappingkey 0.784313738346 255 200 39 255
|
||||
mappingkey 0.78823530674 255 201 43 255
|
||||
mappingkey 0.792156875134 255 202 47 255
|
||||
mappingkey 0.796078443527 255 203 51 255
|
||||
mappingkey 0.800000011921 255 204 54 255
|
||||
mappingkey 0.803921580315 255 205 58 255
|
||||
mappingkey 0.807843148708 255 206 62 255
|
||||
mappingkey 0.811764717102 255 207 66 255
|
||||
mappingkey 0.815686285496 255 208 70 255
|
||||
mappingkey 0.819607853889 255 209 74 255
|
||||
mappingkey 0.823529422283 255 210 78 255
|
||||
mappingkey 0.827450990677 255 211 82 255
|
||||
mappingkey 0.831372559071 255 212 86 255
|
||||
mappingkey 0.835294127464 255 213 90 255
|
||||
mappingkey 0.839215695858 255 214 94 255
|
||||
mappingkey 0.843137264252 255 215 98 255
|
||||
mappingkey 0.847058832645 255 216 102 255
|
||||
mappingkey 0.850980401039 255 217 105 255
|
||||
mappingkey 0.854901969433 255 218 109 255
|
||||
mappingkey 0.858823537827 255 219 113 255
|
||||
mappingkey 0.86274510622 255 220 117 255
|
||||
mappingkey 0.866666674614 255 221 121 255
|
||||
mappingkey 0.870588243008 255 222 125 255
|
||||
mappingkey 0.874509811401 255 223 129 255
|
||||
mappingkey 0.878431379795 255 224 133 255
|
||||
mappingkey 0.882352948189 255 225 137 255
|
||||
mappingkey 0.886274516582 255 226 141 255
|
||||
mappingkey 0.890196084976 255 227 145 255
|
||||
mappingkey 0.89411765337 255 228 149 255
|
||||
mappingkey 0.898039221764 255 229 153 255
|
||||
mappingkey 0.901960790157 255 230 156 255
|
||||
mappingkey 0.905882358551 255 231 160 255
|
||||
mappingkey 0.909803926945 255 232 164 255
|
||||
mappingkey 0.913725495338 255 233 168 255
|
||||
mappingkey 0.917647063732 255 234 172 255
|
||||
mappingkey 0.921568632126 255 235 176 255
|
||||
mappingkey 0.92549020052 255 236 180 255
|
||||
mappingkey 0.929411768913 255 237 184 255
|
||||
mappingkey 0.933333337307 255 238 188 255
|
||||
mappingkey 0.937254905701 255 239 192 255
|
||||
mappingkey 0.941176474094 255 240 196 255
|
||||
mappingkey 0.945098042488 255 241 200 255
|
||||
mappingkey 0.949019610882 255 242 204 255
|
||||
mappingkey 0.952941179276 255 243 207 255
|
||||
mappingkey 0.956862747669 255 244 211 255
|
||||
mappingkey 0.960784316063 255 245 215 255
|
||||
mappingkey 0.964705884457 255 246 219 255
|
||||
mappingkey 0.96862745285 255 247 223 255
|
||||
mappingkey 0.972549021244 255 248 227 255
|
||||
mappingkey 0.976470589638 255 249 231 255
|
||||
mappingkey 0.980392158031 255 250 235 255
|
||||
mappingkey 0.984313726425 255 251 239 255
|
||||
mappingkey 0.988235294819 255 252 243 255
|
||||
mappingkey 0.992156863213 255 253 247 255
|
||||
mappingkey 0.996078431606 255 254 251 255
|
||||
mappingkey 1.0 255 255 255 255
|
||||
@@ -0,0 +1,41 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local earthTransforms = asset.require('scene/solarsystem/planets/earth/transforms')
|
||||
|
||||
local HNMKernel = asset.localResource("kernels/HNM.tf")
|
||||
local GSMKernel = asset.localResource("kernels/GSM.ti")
|
||||
|
||||
local HNMReferenceFrame = {
|
||||
Identifier = "HNMReferenceFrame",
|
||||
Parent = sunTransforms.SolarSystemBarycenter.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "HEEQ180",
|
||||
DestinationFrame = "GALACTIC",
|
||||
Kernels = HNMKernel
|
||||
}
|
||||
},
|
||||
GUI = {
|
||||
Name = "HNM Reference Frame"
|
||||
}
|
||||
}
|
||||
|
||||
local GSMReferenceFrame = {
|
||||
Identifier = "GSMReferenceFrame",
|
||||
Parent = earthTransforms.EarthBarycenter.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "GSM",
|
||||
DestinationFrame = "GALACTIC",
|
||||
Kernels = GSMKernel
|
||||
}
|
||||
},
|
||||
GUI = {
|
||||
Name = "GSM Reference Frame"
|
||||
}
|
||||
}
|
||||
|
||||
local objects = { HNMReferenceFrame, GSMReferenceFrame }
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, objects)
|
||||
24
data/tasks/solarbrowsing/download_from_helioviewer.task
Normal file
24
data/tasks/solarbrowsing/download_from_helioviewer.task
Normal file
@@ -0,0 +1,24 @@
|
||||
-- Example task for downloading data from Helioviewer API
|
||||
-- Valid sourceIds can be found at https://api.helioviewer.org/docs/v2/#appendix
|
||||
|
||||
return {{
|
||||
Type = "HelioviewerDownloadTask",
|
||||
SourceId = 10,
|
||||
Name = "SDO",
|
||||
Instrument = "AIA-171",
|
||||
StartTime = "2018-10-15T00:00:00.000Z",
|
||||
EndTime = "2018-11-16T00:00:00.000Z",
|
||||
TimeStep = 60*60, -- Download an image every hour
|
||||
OutputFolder = "${DATA}/assets/scene/solarsystem/missions/parkersolarprobe/solarbrowsing/imagedata/sdo_aia-171",
|
||||
TimeKernel = "${DATA}/assets/spice/naif0012.tls"
|
||||
}, {
|
||||
Type = "HelioviewerDownloadTask",
|
||||
SourceId = 20,
|
||||
Name = "STEREO-A",
|
||||
Instrument = "EUVI-A-171",
|
||||
StartTime = "2018-10-15T00:00:00.000Z",
|
||||
EndTime = "2018-11-16T00:00:00.000Z",
|
||||
TimeStep = 60*60, -- Download an image every hour
|
||||
OutputFolder = "${DATA}/assets/scene/solarsystem/missions/parkersolarprobe/solarbrowsing/imagedata/stereo-a_euvi-171",
|
||||
TimeKernel = "${DATA}/assets/spice/naif0012.tls"
|
||||
}}
|
||||
@@ -72,7 +72,9 @@ public:
|
||||
void removeKeyframesBetween(double begin, double end, bool inclusiveBegin = false,
|
||||
bool inclusiveEnd = false);
|
||||
size_t nKeyframes() const;
|
||||
Keyframe<T>* firstKeyframeAfter(double timestamp, bool inclusive = false);
|
||||
const Keyframe<T>* firstKeyframeAfter(double timestamp, bool inclusive = false) const;
|
||||
Keyframe<T>* lastKeyframeBefore(double timestamp, bool inclusive = false);
|
||||
const Keyframe<T>* lastKeyframeBefore(double timestamp, bool inclusive = false) const;
|
||||
|
||||
const std::deque<Keyframe<T>>& keyframes() const;
|
||||
|
||||
@@ -168,6 +168,34 @@ size_t Timeline<T>::nKeyframes() const {
|
||||
return _keyframes.size();
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
Keyframe<T>* Timeline<T>::firstKeyframeAfter(double timestamp, bool inclusive)
|
||||
{
|
||||
typename std::deque<Keyframe<T>>::iterator it;
|
||||
if (inclusive) {
|
||||
it = std::lower_bound(
|
||||
_keyframes.begin(),
|
||||
_keyframes.end(),
|
||||
timestamp,
|
||||
&compareKeyframeTimeWithTime
|
||||
);
|
||||
}
|
||||
else {
|
||||
it = std::upper_bound(
|
||||
_keyframes.begin(),
|
||||
_keyframes.end(),
|
||||
timestamp,
|
||||
&compareTimeWithKeyframeTime
|
||||
);
|
||||
}
|
||||
|
||||
if (it == _keyframes.end()) {
|
||||
return nullptr;
|
||||
}
|
||||
return &(*it);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
const Keyframe<T>* Timeline<T>::firstKeyframeAfter(double timestamp, bool inclusive) const
|
||||
{
|
||||
@@ -195,6 +223,34 @@ const Keyframe<T>* Timeline<T>::firstKeyframeAfter(double timestamp, bool inclus
|
||||
return &(*it);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
Keyframe<T>* Timeline<T>::lastKeyframeBefore(double timestamp, bool inclusive)
|
||||
{
|
||||
typename std::deque<Keyframe<T>>::iterator it;
|
||||
if (inclusive) {
|
||||
it = std::upper_bound(
|
||||
_keyframes.begin(),
|
||||
_keyframes.end(),
|
||||
timestamp,
|
||||
&compareTimeWithKeyframeTime
|
||||
);
|
||||
}
|
||||
else {
|
||||
it = std::lower_bound(
|
||||
_keyframes.begin(),
|
||||
_keyframes.end(),
|
||||
timestamp,
|
||||
&compareKeyframeTimeWithTime
|
||||
);
|
||||
}
|
||||
|
||||
if (it == _keyframes.begin()) {
|
||||
return nullptr;
|
||||
}
|
||||
it--;
|
||||
return &(*it);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
const Keyframe<T>* Timeline<T>::lastKeyframeBefore(double timestamp, bool inclusive) const
|
||||
{
|
||||
|
||||
86
modules/solarbrowsing/CMakeLists.txt
Normal file
86
modules/solarbrowsing/CMakeLists.txt
Normal file
@@ -0,0 +1,86 @@
|
||||
##########################################################################################
|
||||
# #
|
||||
# OpenSpace #
|
||||
# #
|
||||
# Copyright (c) 2014-2017 #
|
||||
# #
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of this #
|
||||
# software and associated documentation files (the "Software"), to deal in the Software #
|
||||
# without restriction, including without limitation the rights to use, copy, modify, #
|
||||
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to #
|
||||
# permit persons to whom the Software is furnished to do so, subject to the following #
|
||||
# conditions: #
|
||||
# #
|
||||
# The above copyright notice and this permission notice shall be included in all copies #
|
||||
# or substantial portions of the Software. #
|
||||
# #
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, #
|
||||
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A #
|
||||
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT #
|
||||
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF #
|
||||
# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE #
|
||||
# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #
|
||||
##########################################################################################
|
||||
|
||||
include(${PROJECT_SOURCE_DIR}/support/cmake/module_definition.cmake)
|
||||
|
||||
set(OPENJPEG_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ext/openjpeg/")
|
||||
#set(H264_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ext/libde265/")
|
||||
#add_subdirectory(${OPENJPEG_ROOT_DIR})
|
||||
#add_subdirectory(${H264_ROOT_DIR})
|
||||
|
||||
set(HEADER_FILES
|
||||
# Other
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/util/spacecraftimagerymanager.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/util/j2kcodec.h
|
||||
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/util/structs.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/renderablesolarimagery.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/renderablesolarimageryprojection.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/spacecraftcameraplane.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tasks/helioviewerdownloadtask.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/util/pixelbufferobject.h
|
||||
)
|
||||
|
||||
source_group("Header Files" FILES ${HEADER_FILES})
|
||||
|
||||
set(SOURCE_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/util/spacecraftimagerymanager.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/util/j2kcodec.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/renderablesolarimagery.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/renderablesolarimageryprojection.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/spacecraftcameraplane.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tasks/helioviewerdownloadtask.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/util/pixelbufferobject.cpp
|
||||
)
|
||||
source_group("Source Files" FILES ${SOURCE_FILES})
|
||||
|
||||
create_new_module("SolarBrowsing" solarbrowsing_module ${HEADER_FILES} ${SOURCE_FILES})
|
||||
|
||||
# include_external_library(openspace-module-solarbrowsing PRIVATE openjp2 ${OPENJPEG_ROOT_DIR})
|
||||
add_subdirectory(${OPENJPEG_ROOT_DIR} SYSTEM)
|
||||
set_target_properties(openjp2 PROPERTIES FOLDER "External")
|
||||
target_link_libraries(openspace-module-solarbrowsing PRIVATE openjp2)
|
||||
# target_include
|
||||
|
||||
|
||||
|
||||
target_include_directories(openspace-module-solarbrowsing SYSTEM PUBLIC ${HEADER_FILES})
|
||||
|
||||
target_include_directories(
|
||||
openspace-module-solarbrowsing PUBLIC
|
||||
# Openjpeg stuff
|
||||
${OPENJPEG_BINARY_DIR}/src/lib/openjp2
|
||||
${OPENJPEG_BINARY_DIR}/src/bin/common
|
||||
${OPENJPEG_ROOT_DIR}/src/lib/openjp2
|
||||
${OPENJPEG_ROOT_DIR}/src/bin/jp2
|
||||
${OPENJPEG_ROOT_DIR}/src/bin/common
|
||||
${Z_INCLUDE_DIRNAME}
|
||||
${PNG_INCLUDE_DIRNAME}
|
||||
${TIFF_INCLUDE_DIRNAME}
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${TIFF_INCLUDE_DIRNAME}
|
||||
)
|
||||
|
||||
# Force static linking to prevent __imp* linker errors
|
||||
target_compile_definitions(openspace-module-solarbrowsing PUBLIC "OPJ_STATIC")
|
||||
1
modules/solarbrowsing/ext/openjpeg
Submodule
1
modules/solarbrowsing/ext/openjpeg
Submodule
Submodule modules/solarbrowsing/ext/openjpeg added at 1ad9bec2c1
4
modules/solarbrowsing/include.cmake
Normal file
4
modules/solarbrowsing/include.cmake
Normal file
@@ -0,0 +1,4 @@
|
||||
set (OPENSPACE_DEPENDENCIES
|
||||
space
|
||||
base
|
||||
)
|
||||
355
modules/solarbrowsing/rendering/renderablesolarimagery.cpp
Normal file
355
modules/solarbrowsing/rendering/renderablesolarimagery.cpp
Normal file
@@ -0,0 +1,355 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/solarbrowsing/rendering/renderablesolarimagery.h>
|
||||
|
||||
|
||||
#include <modules/solarbrowsing/solarbrowsingmodule.h>
|
||||
#include <modules/solarbrowsing/util/j2kcodec.h>
|
||||
#include <modules/solarbrowsing/rendering/spacecraftcameraplane.h>
|
||||
#include <modules/solarbrowsing/util/pixelbufferobject.h>
|
||||
#include <openspace/documentation/documentation.h>
|
||||
#include <openspace/engine/globals.h>
|
||||
#include <openspace/engine/moduleengine.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/query/query.h>
|
||||
#include <openspace/scene/scenegraphnode.h>
|
||||
#include <openspace/util/timemanager.h>
|
||||
#include <ghoul/glm.h>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/misc/defer.h>
|
||||
#include <ghoul/opengl/programobject.h>
|
||||
#include <ghoul/opengl/texture.h>
|
||||
#include <chrono>
|
||||
|
||||
namespace {
|
||||
constexpr const char* _loggerCat = "RenderableSolarImagery";
|
||||
constexpr const char* KeyStartInstrument = "StartInstrument";
|
||||
|
||||
constexpr const unsigned int DefaultTextureSize = 32;
|
||||
constexpr const unsigned int MaxImageResolution = 4096;
|
||||
|
||||
static const openspace::properties::Property::PropertyInfo ActiveInstrumentsInfo = {
|
||||
"ActiveInstrument",
|
||||
"Active instrument",
|
||||
"The active instrument of the current spacecraft imagery"
|
||||
};
|
||||
static const openspace::properties::Property::PropertyInfo ContrastValueInfo = {
|
||||
"ContrastValue",
|
||||
"Contrast",
|
||||
"Contrast of the current spacecraft imagery"
|
||||
};
|
||||
static const openspace::properties::Property::PropertyInfo EnableBorderInfo = {
|
||||
"EnableBorder",
|
||||
"Enable Border",
|
||||
"Enables border around the current spacecraft imagery"
|
||||
};
|
||||
static const openspace::properties::Property::PropertyInfo EnableFrustumInfo = {
|
||||
"EnableFrustum",
|
||||
"Enable frustum",
|
||||
"Enables frustum around the current spacecraft imagery"
|
||||
};
|
||||
static const openspace::properties::Property::PropertyInfo GammaValueInfo = {
|
||||
"GammaValue",
|
||||
"Gamma",
|
||||
"Gamma of the current spacecraft imagery"
|
||||
};
|
||||
static const openspace::properties::Property::PropertyInfo MoveFactorInfo = {
|
||||
"MoveFactor",
|
||||
"Move Factor",
|
||||
"How close to the sun to render the imagery"
|
||||
};
|
||||
static const openspace::properties::Property::PropertyInfo PlaneOpacityInfo = {
|
||||
"PlaneOpacity",
|
||||
"Plane Opacity",
|
||||
"Opacity of the image plane"
|
||||
};
|
||||
static const openspace::properties::Property::PropertyInfo DownsamplingLevelInfo = {
|
||||
"DownsamplingLevel",
|
||||
"Downsampling Level",
|
||||
"How much to downsample the original data. 0 is original resolution."
|
||||
};
|
||||
static const openspace::properties::Property::PropertyInfo VerboseModeInfo = {
|
||||
"VerboseMode",
|
||||
"Verbose Mode",
|
||||
"Output information about image decoding etc"
|
||||
};
|
||||
|
||||
struct [[codegen::Dictionary(RenderableSolarImagery)]] Parameters {
|
||||
std::string rootPath;
|
||||
|
||||
std::string transferfunctionPath;
|
||||
};
|
||||
|
||||
#include "renderablesolarimagery_codegen.cpp";
|
||||
}
|
||||
|
||||
namespace openspace {
|
||||
|
||||
documentation::Documentation RenderableSolarImagery::Documentation() {
|
||||
return codegen::doc<Parameters>("renderablesolarimegary");
|
||||
}
|
||||
|
||||
RenderableSolarImagery::RenderableSolarImagery(const ghoul::Dictionary& dictionary)
|
||||
: Renderable(dictionary)
|
||||
, _activeInstruments(ActiveInstrumentsInfo)
|
||||
, _contrastValue(ContrastValueInfo, 0.f, -15.f, 15.f)
|
||||
, _enableBorder(EnableBorderInfo, false)
|
||||
, _enableFrustum(EnableFrustumInfo, false)
|
||||
, _gammaValue(GammaValueInfo, 0.9f, 0.1f, 10.f)
|
||||
, _moveFactor(MoveFactorInfo, 1.0, 0.0, 1.0)
|
||||
, _planeOpacity(PlaneOpacityInfo, 1.f, 0.f, 1.f)
|
||||
, _downsamplingLevel(DownsamplingLevelInfo, 2, 0, 5)
|
||||
, _verboseMode(VerboseModeInfo, false)
|
||||
{
|
||||
const Parameters p = codegen::bake<Parameters>(dictionary);
|
||||
|
||||
std::string rootPath = p.rootPath;
|
||||
|
||||
SolarBrowsingModule* solarbrowsingModule =
|
||||
global::moduleEngine->module<SolarBrowsingModule>();
|
||||
|
||||
SpacecraftImageryManager& spacecraftImageryManager =
|
||||
solarbrowsingModule->spacecraftImageryManager();
|
||||
|
||||
std::string transferfunctionPath = p.transferfunctionPath;
|
||||
|
||||
|
||||
spacecraftImageryManager.loadTransferFunctions(transferfunctionPath, _tfMap);
|
||||
|
||||
|
||||
spacecraftImageryManager.loadImageMetadata(rootPath, _imageMetadataMap);
|
||||
|
||||
// Add GUI names
|
||||
unsigned int guiNameCount = 0;
|
||||
using K = std::string;
|
||||
using V = Timeline<ImageMetadata>;
|
||||
for (const std::pair<K, V>& el : _imageMetadataMap) {
|
||||
_activeInstruments.addOption(guiNameCount++, el.first);
|
||||
}
|
||||
|
||||
if (dictionary.hasKey(KeyStartInstrument)) {
|
||||
_currentActiveInstrument = dictionary.value<std::string>(KeyStartInstrument);
|
||||
}
|
||||
else {
|
||||
_currentActiveInstrument = _activeInstruments.getDescriptionByValue(
|
||||
_activeInstruments
|
||||
);
|
||||
}
|
||||
// Some sanity checks
|
||||
if (_imageMetadataMap.empty()) {
|
||||
LERROR("Images map is empty! Check your path");
|
||||
}
|
||||
|
||||
addProperty(_planeOpacity);
|
||||
addProperty(_enableBorder);
|
||||
addProperty(_enableFrustum);
|
||||
addProperty(_activeInstruments);
|
||||
addProperty(_gammaValue);
|
||||
addProperty(_contrastValue);
|
||||
addProperty(_downsamplingLevel);
|
||||
addProperty(_moveFactor);
|
||||
addProperty(_verboseMode);
|
||||
|
||||
_enableFrustum.onChange([this]() {
|
||||
_enableBorder.setValue(_enableFrustum.value());
|
||||
});
|
||||
|
||||
_activeInstruments.onChange([this]() {
|
||||
_currentActiveInstrument = _activeInstruments.getDescriptionByValue(
|
||||
_activeInstruments
|
||||
);
|
||||
_currentImage = nullptr;
|
||||
});
|
||||
|
||||
_downsamplingLevel.onChange([this]() {
|
||||
_currentImage = nullptr;
|
||||
});
|
||||
|
||||
_moveFactor.onChange([this]() {
|
||||
_spacecraftCameraPlane->createPlaneAndFrustum(_moveFactor);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
void RenderableSolarImagery::initializeGL() {
|
||||
_spacecraftCameraPlane = std::make_unique<SpacecraftCameraPlane>(_moveFactor);
|
||||
_texture = std::make_unique<ghoul::opengl::Texture>(
|
||||
glm::uvec3(DefaultTextureSize, DefaultTextureSize, 1),
|
||||
GL_TEXTURE_2D,
|
||||
ghoul::opengl::Texture::Format::Red, // Format of the pixeldata
|
||||
GL_R8, // INTERNAL format:
|
||||
// More preferable to give explicit precision here,
|
||||
// otherwise up to the driver to decide
|
||||
GL_UNSIGNED_BYTE, // Type of data
|
||||
ghoul::opengl::Texture::FilterMode::Linear,
|
||||
ghoul::opengl::Texture::WrappingMode::ClampToEdge,
|
||||
ghoul::opengl::Texture::AllocateData::Yes,
|
||||
ghoul::opengl::Texture::TakeOwnership::No
|
||||
);
|
||||
|
||||
updateTextureGPU();
|
||||
}
|
||||
|
||||
void RenderableSolarImagery::deinitializeGL() {
|
||||
_spacecraftCameraPlane->destroy();
|
||||
}
|
||||
|
||||
TransferFunction* RenderableSolarImagery::getTransferFunction() {
|
||||
return _lut;
|
||||
}
|
||||
|
||||
const std::unique_ptr<ghoul::opengl::Texture>& RenderableSolarImagery::getImageryTexture()
|
||||
{
|
||||
return _texture;
|
||||
}
|
||||
|
||||
const SpacecraftCameraPlane& RenderableSolarImagery::getCameraPlane() {
|
||||
return *_spacecraftCameraPlane;
|
||||
}
|
||||
|
||||
float RenderableSolarImagery::getContrastValue() {
|
||||
return _contrastValue;
|
||||
}
|
||||
|
||||
float RenderableSolarImagery::getGammaValue() {
|
||||
return _gammaValue;
|
||||
}
|
||||
|
||||
unsigned int RenderableSolarImagery::getImageResolutionFactor() {
|
||||
return _imageSize;
|
||||
}
|
||||
|
||||
glm::vec2 RenderableSolarImagery::getCenterPixel() {
|
||||
return _currentCenterPixel;
|
||||
}
|
||||
|
||||
float RenderableSolarImagery::getScale() {
|
||||
return _currentScale;
|
||||
}
|
||||
|
||||
bool RenderableSolarImagery::isCoronaGraph() {
|
||||
return _isCoronaGraph;
|
||||
}
|
||||
|
||||
bool RenderableSolarImagery::isReady() const {
|
||||
return _spacecraftCameraPlane &&
|
||||
_spacecraftCameraPlane->isReady();
|
||||
}
|
||||
|
||||
void RenderableSolarImagery::updateTextureGPU(bool asyncUpload, bool resChanged) {
|
||||
Keyframe<ImageMetadata>* keyframe =
|
||||
_imageMetadataMap[_currentActiveInstrument].lastKeyframeBefore(
|
||||
global::timeManager->time().j2000Seconds(),
|
||||
true
|
||||
);
|
||||
|
||||
if (keyframe) {
|
||||
if (_currentImage == &(keyframe->data)) {
|
||||
// This keyframe is already uploaded to the GPU.
|
||||
return;
|
||||
}
|
||||
_imageSize = static_cast<unsigned int>(
|
||||
keyframe->data.fullResolution /
|
||||
std::pow(2, static_cast<int>(_downsamplingLevel))
|
||||
);
|
||||
_isCoronaGraph = keyframe->data.isCoronaGraph;
|
||||
_currentScale = keyframe->data.scale;
|
||||
_currentCenterPixel = keyframe->data.centerPixel;
|
||||
_currentImage = &(keyframe->data);
|
||||
|
||||
_decodeBuffer.resize(_imageSize * _imageSize * sizeof(IMG_PRECISION));
|
||||
decode(_decodeBuffer.data(), keyframe->data.filename);
|
||||
}
|
||||
else {
|
||||
if (_currentImage == nullptr) {
|
||||
// No need to re-upload an empty image.
|
||||
return;
|
||||
}
|
||||
_isCoronaGraph = false;
|
||||
_imageSize = 32;
|
||||
_currentScale = 0;
|
||||
_currentCenterPixel = glm::vec2(2.f);
|
||||
_currentImage = nullptr;
|
||||
}
|
||||
|
||||
_texture->setDimensions(glm::uvec3(_imageSize, _imageSize, 1));
|
||||
_texture->setPixelData(
|
||||
_decodeBuffer.data(),
|
||||
ghoul::opengl::Texture::TakeOwnership::No
|
||||
);
|
||||
_texture->uploadTexture();
|
||||
}
|
||||
|
||||
void RenderableSolarImagery::decode(unsigned char* buffer, const std::string& filename) {
|
||||
J2kCodec j2c(_verboseMode);
|
||||
j2c.decodeIntoBuffer(filename, buffer, _downsamplingLevel);
|
||||
}
|
||||
|
||||
bool RenderableSolarImagery::checkBoundaries(const RenderData& data) {
|
||||
const glm::dvec3& normal = _spacecraftCameraPlane->normal();
|
||||
const glm::dvec3& cameraPosition = data.camera.positionVec3();
|
||||
const glm::dvec3& planePosition = _spacecraftCameraPlane->worldPosition();
|
||||
|
||||
const glm::dvec3 toCamera = glm::normalize(cameraPosition - planePosition);
|
||||
if (glm::dot(toCamera, normal) < 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void RenderableSolarImagery::update(const UpdateData& data) {
|
||||
// Update lookup table, TODO: No need to do this every update
|
||||
_lut = _tfMap[_currentActiveInstrument].get();
|
||||
_spacecraftCameraPlane->update();
|
||||
}
|
||||
|
||||
void RenderableSolarImagery::render(const RenderData& data, RendererTasks&) {
|
||||
// Update texture
|
||||
//if (checkBoundaries(data)) {
|
||||
// TODO: The checkBoundaries logic was temporarily disabled since it causes
|
||||
// a bug that prevents this renderablesolarimageryprojection component to be updated
|
||||
// as soon as the view frustum is more than 90 degrees off.
|
||||
updateTextureGPU();
|
||||
//}
|
||||
const glm::dvec3& sunPositionWorld = sceneGraphNode("Sun")->worldPosition();
|
||||
_spacecraftCameraPlane->render(
|
||||
data,
|
||||
*_texture,
|
||||
_lut,
|
||||
sunPositionWorld,
|
||||
_planeOpacity,
|
||||
_contrastValue,
|
||||
_gammaValue,
|
||||
_enableBorder,
|
||||
_enableFrustum,
|
||||
_currentCenterPixel,
|
||||
_currentScale,
|
||||
_imagePlaneOffset,
|
||||
_isCoronaGraph
|
||||
);
|
||||
}
|
||||
|
||||
} // namespace openspace
|
||||
122
modules/solarbrowsing/rendering/renderablesolarimagery.h
Normal file
122
modules/solarbrowsing/rendering/renderablesolarimagery.h
Normal file
@@ -0,0 +1,122 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_SOLARBROWSING___RENDERABLESOLARIMAGERY___H__
|
||||
#define __OPENSPACE_MODULE_SOLARBROWSING___RENDERABLESOLARIMAGERY___H__
|
||||
|
||||
#include <openspace/rendering/renderable.h>
|
||||
|
||||
#include <modules/solarbrowsing/util/spacecraftimagerymanager.h>
|
||||
#include <openspace/properties/misc/optionproperty.h>
|
||||
#include <openspace/properties/scalar/boolproperty.h>
|
||||
#include <openspace/properties/scalar/doubleproperty.h>
|
||||
#include <openspace/properties/scalar/floatproperty.h>
|
||||
#include <openspace/properties/scalar/intproperty.h>
|
||||
#include <openspace/util/timeline.h>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <chrono>
|
||||
#include <unordered_set>
|
||||
|
||||
|
||||
namespace ghoul::opengl { class Texture; }
|
||||
|
||||
namespace openspace {
|
||||
|
||||
namespace documentation { struct Documentation; }
|
||||
|
||||
class PixelBufferObject;
|
||||
class SpacecraftCameraPlane;
|
||||
class TransferFunction;
|
||||
|
||||
class RenderableSolarImagery : public Renderable {
|
||||
public:
|
||||
RenderableSolarImagery(const ghoul::Dictionary& dictionary);
|
||||
|
||||
void initializeGL() override;
|
||||
void deinitializeGL() override;
|
||||
|
||||
bool isReady() const override;
|
||||
|
||||
void render(const RenderData& data, RendererTasks& rendererTask) override;
|
||||
void update(const UpdateData& data) override;
|
||||
|
||||
static documentation::Documentation Documentation();
|
||||
|
||||
TransferFunction* getTransferFunction();
|
||||
const std::unique_ptr<ghoul::opengl::Texture>& getImageryTexture();
|
||||
const SpacecraftCameraPlane& getCameraPlane();
|
||||
float getContrastValue();
|
||||
float getGammaValue();
|
||||
unsigned int getImageResolutionFactor();
|
||||
glm::vec2 getCenterPixel();
|
||||
float getScale();
|
||||
bool isCoronaGraph();
|
||||
|
||||
private:
|
||||
properties::OptionProperty _activeInstruments;
|
||||
properties::FloatProperty _contrastValue;
|
||||
properties::BoolProperty _enableBorder;
|
||||
properties::BoolProperty _enableFrustum;
|
||||
properties::FloatProperty _gammaValue;
|
||||
properties::DoubleProperty _moveFactor;
|
||||
properties::FloatProperty _planeOpacity;
|
||||
properties::IntProperty _downsamplingLevel;
|
||||
properties::BoolProperty _verboseMode;
|
||||
|
||||
TransferFunction* _lut;
|
||||
std::unique_ptr<ghoul::opengl::Texture> _texture;
|
||||
|
||||
float _imagePlaneOffset = 0.0;
|
||||
double _realTimeDiff;
|
||||
|
||||
bool _isWithinFrustum = false;
|
||||
bool _isWithinFrustumLast = true;
|
||||
unsigned int _bufferCountOffset = 1;
|
||||
unsigned int _imageSize;
|
||||
|
||||
float _currentScale;
|
||||
glm::vec2 _currentCenterPixel;
|
||||
bool _isCoronaGraph;
|
||||
|
||||
// For debugging
|
||||
unsigned int _frameSkipCount = 0;
|
||||
|
||||
std::unordered_map<std::string, std::shared_ptr<TransferFunction>> _tfMap;
|
||||
std::string _currentActiveInstrument;
|
||||
ImageMetadata* _currentImage;
|
||||
std::unordered_map<std::string, Timeline<ImageMetadata>> _imageMetadataMap;
|
||||
std::unique_ptr<SpacecraftCameraPlane> _spacecraftCameraPlane;
|
||||
std::vector<unsigned char> _decodeBuffer;
|
||||
|
||||
void updateTextureGPU(bool asyncUpload = true, bool resChanged = false);
|
||||
void listen();
|
||||
bool checkBoundaries(const RenderData& data);
|
||||
|
||||
void decode(unsigned char* buffer, const std::string& fileame);
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_SOLARBROWSING___RENDERABLESOLARIMAGERY___H__
|
||||
@@ -0,0 +1,201 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/solarbrowsing/rendering/renderablesolarimageryprojection.h>
|
||||
|
||||
#include <modules/solarbrowsing/rendering/renderablesolarimagery.h>
|
||||
#include <modules/solarbrowsing/rendering/spacecraftcameraplane.h>
|
||||
#include <openspace/documentation/documentation.h>
|
||||
#include <openspace/engine/globals.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <openspace/rendering/transferfunction.h>
|
||||
#include <openspace/scene/scene.h>
|
||||
#include <openspace/scene/scenegraphnode.h>
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
#include <ghoul/opengl/texture.h>
|
||||
#include <ghoul/opengl/textureunit.h>
|
||||
#include <ghoul/opengl/programobject.h>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <format>
|
||||
#include <fstream>
|
||||
#include <limits>
|
||||
#include <memory>
|
||||
|
||||
namespace {
|
||||
constexpr const char* _loggerCat = "RendearbleSpacecraftCameraSphere";
|
||||
|
||||
// This number MUST match the constant specified in the shader, otherwise UB / MN
|
||||
constexpr const int MaxSpacecraftObservatories = 7;
|
||||
|
||||
struct [[codegen::Dictionary(RenderableSolarImageryProjection)]] Parameters {
|
||||
std::vector<std::string> dependentNodes;
|
||||
|
||||
std::optional<float> radius;
|
||||
};
|
||||
|
||||
#include "renderablesolarimageryprojection_codegen.cpp"
|
||||
} // namespace
|
||||
|
||||
namespace openspace {
|
||||
|
||||
documentation::Documentation RenderableSolarImageryProjection::Documentation() {
|
||||
return codegen::doc<Parameters>("renderablesolarimageryprojection");
|
||||
}
|
||||
|
||||
RenderableSolarImageryProjection::RenderableSolarImageryProjection(
|
||||
const ghoul::Dictionary& dictionary)
|
||||
: Renderable(dictionary)
|
||||
, _sphere(6.96701E8f, 100)
|
||||
{
|
||||
const Parameters p = codegen::bake<Parameters>(dictionary);
|
||||
|
||||
_dependentNodes = p.dependentNodes;
|
||||
//_sphere(p.radius.value_or(6.96701E8f), 100) @TODO
|
||||
}
|
||||
|
||||
void RenderableSolarImageryProjection::initialize() {
|
||||
for (const std::string& n : _dependentNodes) {
|
||||
SceneGraphNode* depNode = global::renderEngine->scene()->sceneGraphNode(n);
|
||||
if (!depNode) {
|
||||
LWARNING(std::format(
|
||||
"Specified dependent node '{}' did not exist", n
|
||||
));
|
||||
continue;
|
||||
}
|
||||
Renderable* depR = depNode->renderable();
|
||||
RenderableSolarImagery* siR = dynamic_cast<RenderableSolarImagery*>(depR);
|
||||
if (!siR) {
|
||||
LWARNING(std::format(
|
||||
"Specified dependent node '{}' that was not a RenderableSolarImagery", n
|
||||
));
|
||||
continue;
|
||||
}
|
||||
_solarImageryDependencies.push_back(depNode);
|
||||
}
|
||||
}
|
||||
|
||||
void RenderableSolarImageryProjection::initializeGL() {
|
||||
if (!_shader) {
|
||||
_shader = global::renderEngine->buildRenderProgram("SpacecraftImageSphereProgram",
|
||||
absPath("${MODULE_SOLARBROWSING}/shaders/spacecraftimageprojection_vs.glsl"),
|
||||
absPath("${MODULE_SOLARBROWSING}/shaders/spacecraftimageprojection_fs.glsl")
|
||||
);
|
||||
}
|
||||
|
||||
_sphere.initialize();
|
||||
}
|
||||
|
||||
void RenderableSolarImageryProjection::deinitializeGL() {
|
||||
if (_shader) {
|
||||
global::renderEngine->removeRenderProgram(_shader.get());
|
||||
_shader = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
bool RenderableSolarImageryProjection::isReady() const {
|
||||
return _shader != nullptr;
|
||||
}
|
||||
|
||||
void RenderableSolarImageryProjection::update(const UpdateData& data) {
|
||||
if (_shader->isDirty()) {
|
||||
_shader->rebuildFromFile();
|
||||
}
|
||||
}
|
||||
|
||||
void RenderableSolarImageryProjection::render(const RenderData& data, RendererTasks& rendererTask) {
|
||||
glm::dmat4 modelTransform =
|
||||
glm::translate(glm::dmat4(1.0), data.modelTransform.translation) *
|
||||
glm::dmat4(data.modelTransform.rotation) *
|
||||
glm::dmat4(glm::scale(glm::dmat4(1.0), glm::dvec3(data.modelTransform.scale)));
|
||||
glm::dmat4 modelViewTransform = data.camera.combinedViewMatrix() * modelTransform;
|
||||
|
||||
_shader->activate();
|
||||
|
||||
_shader->setUniform(
|
||||
"modelViewProjectionTransform",
|
||||
data.camera.projectionMatrix() * glm::mat4(modelViewTransform)
|
||||
);
|
||||
|
||||
const int numPlanes = _solarImageryDependencies.size();
|
||||
int solarImageryCount = 0;
|
||||
|
||||
ghoul::opengl::TextureUnit txUnits[MaxSpacecraftObservatories];
|
||||
ghoul::opengl::TextureUnit tfUnits[MaxSpacecraftObservatories];
|
||||
|
||||
for (int i = 0; i < numPlanes; ++i) {
|
||||
RenderableSolarImagery* solarImagery = static_cast<RenderableSolarImagery*>(
|
||||
_solarImageryDependencies[i]->renderable()
|
||||
);
|
||||
|
||||
bool isCoronaGraph = solarImagery->isCoronaGraph();
|
||||
bool enabled = solarImagery->isEnabled();
|
||||
|
||||
const SpacecraftCameraPlane& plane = solarImagery->getCameraPlane();
|
||||
const glm::dvec3 planePos = plane.worldPosition();
|
||||
const glm::dmat4 planeRot = plane.worldRotation();
|
||||
|
||||
_shader->setUniform("isCoronaGraph[" + std::to_string(i) + "]", isCoronaGraph);
|
||||
_shader->setUniform("isEnabled[" + std::to_string(i) + "]", enabled);
|
||||
_shader->setUniform("sunToSpacecraftReferenceFrame[" + std::to_string(i) + "]",
|
||||
planeRot * glm::dmat4(data.modelTransform.rotation));
|
||||
_shader->setUniform("planePositionSpacecraft[" + std::to_string(i) + "]",
|
||||
glm::dvec3(planeRot * glm::dvec4(planePos, 1.0)));
|
||||
_shader->setUniform("gammaValue[" + std::to_string(i) + "]", solarImagery->getGammaValue());
|
||||
_shader->setUniform("contrastValue[" + std::to_string(i) + "]", solarImagery->getContrastValue());
|
||||
_shader->setUniform("scale[" + std::to_string(i) + "]", solarImagery->getScale());
|
||||
_shader->setUniform("centerPixel[" + std::to_string(i) + "]", solarImagery->getCenterPixel());
|
||||
|
||||
// Imagery texture
|
||||
txUnits[i].activate();
|
||||
solarImagery->getImageryTexture()->bind();
|
||||
_shader->setUniform("imageryTexture[" + std::to_string(i) + "]", txUnits[i]);
|
||||
tfUnits[i].activate();
|
||||
|
||||
TransferFunction* lut = solarImagery->getTransferFunction();
|
||||
if (lut && solarImagery->isEnabled()) {
|
||||
lut->bind();
|
||||
_shader->setUniform("hasLut[" + std::to_string(i) + "]", true);
|
||||
} else {
|
||||
_shader->setUniform("hasLut[" + std::to_string(i) + "]", false);
|
||||
}
|
||||
// Must bind all sampler2D, otherwise undefined behaviour
|
||||
_shader->setUniform("lut[" + std::to_string(i) + "]", tfUnits[i]);
|
||||
solarImageryCount++;
|
||||
}
|
||||
|
||||
// Set the rest of the texture units for well defined behaviour
|
||||
for (int i = solarImageryCount; i < MaxSpacecraftObservatories; ++i) {
|
||||
txUnits[i].activate();
|
||||
_shader->setUniform("imageryTexture[" + std::to_string(i) + "]", txUnits[i]);
|
||||
tfUnits[i].activate();
|
||||
_shader->setUniform("lut[" + std::to_string(i) + "]", tfUnits[i]);
|
||||
}
|
||||
|
||||
_shader->setUniform("numSpacecraftCameraPlanes", numPlanes);
|
||||
_sphere.render();
|
||||
_shader->deactivate();
|
||||
}
|
||||
|
||||
} // namespace openspace
|
||||
@@ -0,0 +1,76 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_SOLARBROWSING___RENDERABLESOLARIMAGERYPROJECTION___H__
|
||||
#define __OPENSPACE_MODULE_SOLARBROWSING___RENDERABLESOLARIMAGERYPROJECTION___H__
|
||||
|
||||
#include <openspace/rendering/renderable.h>
|
||||
|
||||
#include <openspace/util/sphere.h>
|
||||
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace ghoul::opengl {
|
||||
class ProgramObject;
|
||||
class Texture;
|
||||
} // namespace ghoul::opengl
|
||||
|
||||
namespace openspace {
|
||||
|
||||
namespace documentation { struct Documentation; }
|
||||
|
||||
class SceneGraphNode;
|
||||
|
||||
class RenderableSolarImageryProjection : public Renderable {
|
||||
public:
|
||||
RenderableSolarImageryProjection(const ghoul::Dictionary& dictionary);
|
||||
|
||||
void initialize() override;
|
||||
|
||||
void initializeGL() override;
|
||||
void deinitializeGL() override;
|
||||
|
||||
bool isReady() const override;
|
||||
|
||||
void render(const RenderData& data, RendererTasks& rendererTask) override;
|
||||
void update(const UpdateData& data) override;
|
||||
|
||||
std::unique_ptr<ghoul::opengl::ProgramObject> _shader;
|
||||
Sphere _sphere;
|
||||
|
||||
static documentation::Documentation Documentation();
|
||||
|
||||
private:
|
||||
void loadTexture();
|
||||
|
||||
std::vector<std::string> _dependentNodes;
|
||||
std::vector<SceneGraphNode*> _solarImageryDependencies;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_SOLARBROWSING___RENDERABLESOLARIMAGERYPROJECTION___H__
|
||||
304
modules/solarbrowsing/rendering/spacecraftcameraplane.cpp
Normal file
304
modules/solarbrowsing/rendering/spacecraftcameraplane.cpp
Normal file
@@ -0,0 +1,304 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/solarbrowsing/rendering/spacecraftcameraplane.h>
|
||||
|
||||
#include <openspace/engine/globals.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <openspace/rendering/transferfunction.h>
|
||||
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/opengl/programobject.h>
|
||||
#include <ghoul/opengl/texture.h>
|
||||
#include <ghoul/opengl/textureunit.h>
|
||||
|
||||
|
||||
namespace {
|
||||
constexpr const double SUN_RADIUS = (1391600000.0 * 0.5);
|
||||
constexpr const char* _loggerCat = "SpacecraftCameraPlane";
|
||||
} // namespace
|
||||
|
||||
namespace openspace {
|
||||
|
||||
SpacecraftCameraPlane::SpacecraftCameraPlane(double moveDistance) {
|
||||
initialize();
|
||||
createPlaneAndFrustum(moveDistance);
|
||||
}
|
||||
|
||||
bool SpacecraftCameraPlane::destroy() {
|
||||
glDeleteVertexArrays(1, &_quad);
|
||||
_quad = 0;
|
||||
glDeleteVertexArrays(1, &_frustum);
|
||||
_frustum = 0;
|
||||
|
||||
if (_planeShader) {
|
||||
global::renderEngine->removeRenderProgram(_planeShader.get());
|
||||
_planeShader = nullptr;
|
||||
}
|
||||
if (_frustumShader) {
|
||||
global::renderEngine->removeRenderProgram(_frustumShader.get());
|
||||
_frustumShader = nullptr;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SpacecraftCameraPlane::initialize() {
|
||||
// Initialize plane buffer
|
||||
glGenVertexArrays(1, &_quad);
|
||||
glGenBuffers(1, &_vertexPositionBuffer);
|
||||
// Initialize frustum buffer
|
||||
glGenVertexArrays(1, &_frustum);
|
||||
glGenBuffers(1, &_frustumPositionBuffer);
|
||||
if (!_planeShader) {
|
||||
_planeShader = global::renderEngine->buildRenderProgram("SpacecraftImagePlaneProgram",
|
||||
absPath("${MODULE_SOLARBROWSING}/shaders/spacecraftimageplane_vs.glsl"),
|
||||
absPath("${MODULE_SOLARBROWSING}/shaders/spacecraftimageplane_fs.glsl")
|
||||
);
|
||||
if (!_planeShader) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!_frustumShader) {
|
||||
_frustumShader = global::renderEngine->buildRenderProgram("SpacecraftFrustumProgram",
|
||||
absPath("${MODULE_SOLARBROWSING}/shaders/spacecraftimagefrustum_vs.glsl"),
|
||||
absPath("${MODULE_SOLARBROWSING}/shaders/spacecraftimagefrustum_fs.glsl")
|
||||
);
|
||||
if (!_frustumShader) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const glm::vec3& SpacecraftCameraPlane::normal() const {
|
||||
return _normal;
|
||||
};
|
||||
|
||||
const glm::dvec3& SpacecraftCameraPlane::worldPosition() const {
|
||||
return _position;
|
||||
}
|
||||
|
||||
const glm::dmat4& SpacecraftCameraPlane::worldRotation() const {
|
||||
return _rotation;
|
||||
}
|
||||
|
||||
void SpacecraftCameraPlane::update() {
|
||||
if (_planeShader->isDirty()) {
|
||||
_planeShader->rebuildFromFile();
|
||||
}
|
||||
|
||||
if (_frustumShader->isDirty()) {
|
||||
_frustumShader->rebuildFromFile();
|
||||
}
|
||||
}
|
||||
|
||||
bool SpacecraftCameraPlane::isReady() {
|
||||
return _planeShader && _frustumShader;
|
||||
}
|
||||
|
||||
void SpacecraftCameraPlane::createPlaneAndFrustum(double moveDistance) {
|
||||
//const double a = 1;
|
||||
//const double b = 0;
|
||||
//const double c = 0.31622776601; // sqrt(0.1)
|
||||
//_move = a * exp(-(pow((_moveFactor.value() - 1) - b, 2.0)) / (2.0 * pow(c, 2.0)));
|
||||
//_move = /*a **/ exp(-(pow((_moveFactor.value() - 1) /*- b*/, 2.0)) / (2.0 /** pow(c, 2.0)*/));
|
||||
_gaussianMoveFactor = /*a **/ exp(-(pow((moveDistance - 1) /*- b*/, 2.0)) / (2.0 /** pow(c, 2.0)*/));
|
||||
_size = static_cast<float>(_gaussianMoveFactor * SUN_RADIUS); /// _scaleFactor;
|
||||
createPlane();
|
||||
createFrustum();
|
||||
}
|
||||
|
||||
void SpacecraftCameraPlane::createPlane() {
|
||||
const GLfloat size = _size;
|
||||
const GLfloat vertex_data[] = {
|
||||
// x y z w s t
|
||||
-size, -size, 0.f, 0.f, 0.f, 0.f,
|
||||
size, size, 0.f, 0.f, 1.f, 1.f,
|
||||
-size, size, 0.f, 0.f, 0.f, 1.f,
|
||||
-size, -size, 0.f, 0.f, 0.f, 0.f,
|
||||
size, -size, 0.f, 0.f, 1.f, 0.f,
|
||||
size, size, 0.f, 0.f, 1.f, 1.f,
|
||||
};
|
||||
|
||||
glBindVertexArray(_quad); // bind array
|
||||
glBindBuffer(GL_ARRAY_BUFFER, _vertexPositionBuffer); // bind buffer
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_data), vertex_data, GL_STATIC_DRAW);
|
||||
glEnableVertexAttribArray(0);
|
||||
glVertexAttribPointer(
|
||||
0,
|
||||
4,
|
||||
GL_FLOAT,
|
||||
GL_FALSE,
|
||||
sizeof(GLfloat) * 6,
|
||||
reinterpret_cast<void*>(0)
|
||||
);
|
||||
glEnableVertexAttribArray(1);
|
||||
glVertexAttribPointer(
|
||||
1,
|
||||
2,
|
||||
GL_FLOAT,
|
||||
GL_FALSE,
|
||||
sizeof(GLfloat) * 6,
|
||||
reinterpret_cast<void*>(sizeof(GLfloat) * 4)
|
||||
);
|
||||
}
|
||||
|
||||
void SpacecraftCameraPlane::createFrustum() {
|
||||
// Vertex orders x, y, z, w
|
||||
// Where w indicates if vertex should be drawn in spacecraft
|
||||
// or planes coordinate system
|
||||
const GLfloat vertex_data[] = {
|
||||
0.f, 0.f, 0.f, 0.0,
|
||||
_size, _size, 0.f , 1.0,
|
||||
0.f, 0.f, 0.f, 0.0,
|
||||
-_size, -_size, 0.f , 1.0,
|
||||
0.f, 0.f, 0.f, 0.0,
|
||||
_size, -_size, 0.f , 1.0,
|
||||
0.f, 0.f, 0.f, 0.0,
|
||||
-_size, _size, 0.f , 1.0,
|
||||
// Borders
|
||||
// Left
|
||||
-_size, -_size, 0.f, 1.0,
|
||||
-_size, _size, 0.f, 1.0,
|
||||
// Top
|
||||
-_size, _size, 0.f, 1.0,
|
||||
_size, _size, 0.f, 1.0,
|
||||
// Right
|
||||
_size, _size, 0.f, 1.0,
|
||||
_size, -_size, 0.f, 1.0,
|
||||
// Bottom
|
||||
_size, -_size, 0.f, 1.0,
|
||||
-_size, -_size, 0.f, 1.0,
|
||||
};
|
||||
glBindVertexArray(_frustum);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, _frustumPositionBuffer);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_data), vertex_data, GL_STATIC_DRAW);
|
||||
glEnableVertexAttribArray(0);
|
||||
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, reinterpret_cast<void*>(0));
|
||||
}
|
||||
|
||||
void SpacecraftCameraPlane::render(const RenderData& data,
|
||||
ghoul::opengl::Texture& imageryTexture,
|
||||
TransferFunction* lut,
|
||||
const glm::dvec3& sunPositionWorld, float planeOpacity,
|
||||
float contrastValue, float gammaValue,
|
||||
bool enableBorder, bool enableFrustum,
|
||||
const glm::vec2& currentCenterPixel,
|
||||
float currentScale, float multipleImageryOffset,
|
||||
bool isCoronaGraph)
|
||||
{
|
||||
glEnable(GL_CULL_FACE);
|
||||
|
||||
// Perform necessary transforms
|
||||
const glm::dmat4& viewMatrix = data.camera.combinedViewMatrix();
|
||||
const glm::mat4& projectionMatrix = data.camera.projectionMatrix();
|
||||
|
||||
// TODO: We want to create sun imagery node from within the module
|
||||
const glm::dvec3& spacecraftPosWorld = data.modelTransform.translation;
|
||||
const glm::dmat3 spacecraftRotWorld = data.modelTransform.rotation;
|
||||
|
||||
const glm::dvec3 sunDir = sunPositionWorld - spacecraftPosWorld;
|
||||
const glm::dvec3 offset = sunDir * (_gaussianMoveFactor + static_cast<double>(multipleImageryOffset));
|
||||
|
||||
const glm::dvec3 up = spacecraftRotWorld * glm::dvec3(0.0, 0.0, 1.0);
|
||||
_position = spacecraftPosWorld + offset;
|
||||
_normal = glm::normalize(spacecraftPosWorld - _position);
|
||||
_rotation = glm::lookAt(glm::normalize(spacecraftPosWorld), glm::dvec3(sunPositionWorld), up);
|
||||
const glm::dmat4 rotationInv = glm::inverse(_rotation);
|
||||
|
||||
const glm::dmat4 modelTransform =
|
||||
glm::translate(glm::dmat4(1.0), _position) *
|
||||
rotationInv *
|
||||
glm::dmat4(glm::scale(glm::dmat4(1.0), glm::dvec3(data.modelTransform.scale))) *
|
||||
glm::dmat4(1.0);
|
||||
const glm::dmat4 modelViewTransform = viewMatrix * modelTransform;
|
||||
|
||||
// For frustum
|
||||
const glm::dmat4 spacecraftModelTransform =
|
||||
glm::translate(glm::dmat4(1.0), spacecraftPosWorld) *
|
||||
rotationInv *
|
||||
glm::dmat4(glm::scale(glm::dmat4(1.0), glm::dvec3(data.modelTransform.scale))) *
|
||||
glm::dmat4(1.0);
|
||||
|
||||
_planeShader->activate();
|
||||
ghoul::opengl::TextureUnit imageUnit;
|
||||
imageUnit.activate();
|
||||
imageryTexture.bind();
|
||||
|
||||
_planeShader->setUniform("isCoronaGraph", isCoronaGraph);
|
||||
_planeShader->setUniform("scale", currentScale);
|
||||
_planeShader->setUniform("centerPixel", currentCenterPixel);
|
||||
_planeShader->setUniform("imageryTexture", imageUnit);
|
||||
_planeShader->setUniform("planeOpacity", planeOpacity);
|
||||
_planeShader->setUniform("gammaValue", gammaValue);
|
||||
_planeShader->setUniform("contrastValue", contrastValue);
|
||||
_planeShader->setUniform(
|
||||
"modelViewProjectionTransform",
|
||||
projectionMatrix * glm::mat4(modelViewTransform)
|
||||
);
|
||||
|
||||
//_tfMap[_currentActiveInstrument]->bind(); // Calls update internally
|
||||
ghoul::opengl::TextureUnit tfUnit;
|
||||
tfUnit.activate();
|
||||
if (lut) {
|
||||
lut->bind();
|
||||
_planeShader->setUniform("hasLut", true);
|
||||
} else {
|
||||
_planeShader->setUniform("hasLut", false);
|
||||
}
|
||||
// Must bind all sampler2D, otherwise undefined behaviour
|
||||
_planeShader->setUniform("lut", tfUnit);
|
||||
|
||||
glBindVertexArray(_quad);
|
||||
glDrawArrays(GL_TRIANGLES, 0, 6);
|
||||
|
||||
_planeShader->deactivate();
|
||||
_frustumShader->activate();
|
||||
|
||||
_frustumShader->setUniform("planeOpacity", planeOpacity);
|
||||
_frustumShader->setUniform("modelViewProjectionTransform",
|
||||
projectionMatrix
|
||||
* glm::mat4(viewMatrix * spacecraftModelTransform));
|
||||
_frustumShader->setUniform("modelViewProjectionTransformPlane",
|
||||
projectionMatrix * glm::mat4(modelViewTransform));
|
||||
|
||||
_frustumShader->setUniform("scale", currentScale);
|
||||
_frustumShader->setUniform("centerPixel", currentCenterPixel);
|
||||
|
||||
glBindVertexArray(_frustum);
|
||||
|
||||
if (enableBorder && enableFrustum) {
|
||||
glDrawArrays(GL_LINES, 0, 16);
|
||||
} else if (!enableBorder && enableFrustum) {
|
||||
glDrawArrays(GL_LINES, 0, 8);
|
||||
} else if (!enableFrustum && enableBorder) {
|
||||
glDrawArrays(GL_LINES, 8, 16);
|
||||
}
|
||||
_frustumShader->deactivate();
|
||||
|
||||
glDisable(GL_CULL_FACE);
|
||||
}
|
||||
|
||||
} // namespace openspace
|
||||
91
modules/solarbrowsing/rendering/spacecraftcameraplane.h
Normal file
91
modules/solarbrowsing/rendering/spacecraftcameraplane.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_SOLARBROWSING___SPACECRAFTCAMERAPLANE___H__
|
||||
#define __OPENSPACE_MODULE_SOLARBROWSING___SPACECRAFTCAMERAPLANE___H__
|
||||
|
||||
#include <openspace/util/updatestructures.h>
|
||||
#include <ghoul/opengl/ghoul_gl.h>
|
||||
#include <ghoul/opengl/programobject.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace ghoul::opengl { class Texture; }
|
||||
|
||||
namespace openspace {
|
||||
|
||||
class TransferFunction;
|
||||
|
||||
class SpacecraftCameraPlane {
|
||||
public:
|
||||
SpacecraftCameraPlane(double moveDistance);
|
||||
|
||||
void render(const RenderData& data, ghoul::opengl::Texture& imageryTexture,
|
||||
TransferFunction* lut, const glm::dvec3& sunPositionWorld, float planeOpacity,
|
||||
float contrastValue, float gammaValue, bool enableBorder, bool enableFrustum,
|
||||
const glm::vec2& currentCenterPixel, float currentScale,
|
||||
float multipleImageryOffset, bool isCoronaGraph);
|
||||
|
||||
void update();
|
||||
void createPlaneAndFrustum(double moveDistance);
|
||||
// TODO(mnoven) : Pre process image, no need to set uniforms
|
||||
//void setUniforms();
|
||||
bool isReady();
|
||||
bool destroy();
|
||||
|
||||
const glm::vec3& normal() const;
|
||||
const glm::dvec3& worldPosition() const;
|
||||
const glm::dmat4& worldRotation() const;
|
||||
|
||||
//glm::dvec3 _planePosSpacecraftRefFrame;
|
||||
//glm::dmat4 _sunToSpacecraftTransform;
|
||||
|
||||
private:
|
||||
std::unique_ptr<ghoul::opengl::ProgramObject> _frustumShader;
|
||||
std::unique_ptr<ghoul::opengl::ProgramObject> _planeShader;
|
||||
|
||||
GLuint _frustum;
|
||||
GLuint _frustumPositionBuffer;
|
||||
GLuint _quad;
|
||||
GLuint _vertexPositionBuffer;
|
||||
|
||||
// glm::dvec3 _spacecraftPosition;
|
||||
// glm::dmat4 _spacecraftRotation.
|
||||
glm::dvec3 _position;
|
||||
glm::dmat4 _rotation;
|
||||
glm::vec3 _normal;
|
||||
|
||||
//glm::dvec2 _centerPixel;
|
||||
double _gaussianMoveFactor;
|
||||
float _size;
|
||||
//float _scaleFactor;
|
||||
|
||||
void createFrustum();
|
||||
void createPlane();
|
||||
bool initialize();
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_SOLARBROWSING___SPACECRAFTCAMERAPLANE___H__
|
||||
46
modules/solarbrowsing/shaders/spacecraftimagefrustum_fs.glsl
Normal file
46
modules/solarbrowsing/shaders/spacecraftimagefrustum_fs.glsl
Normal file
@@ -0,0 +1,46 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
in vec4 vs_positionScreenSpace;
|
||||
#include "fragment.glsl"
|
||||
|
||||
uniform float planeOpacity;
|
||||
|
||||
Fragment getFragment() {
|
||||
|
||||
vec4 diffuse;
|
||||
if (planeOpacity < 0.25) {
|
||||
diffuse = vec4(1.0, 1.0, 1.0, planeOpacity);
|
||||
} else {
|
||||
diffuse = vec4(1.0, 1.0, 1.0, 0.25);
|
||||
}
|
||||
|
||||
if (diffuse.a == 0.0)
|
||||
discard;
|
||||
|
||||
Fragment frag;
|
||||
frag.color = diffuse;
|
||||
frag.depth = vs_positionScreenSpace.w;
|
||||
return frag;
|
||||
}
|
||||
55
modules/solarbrowsing/shaders/spacecraftimagefrustum_vs.glsl
Normal file
55
modules/solarbrowsing/shaders/spacecraftimagefrustum_vs.glsl
Normal file
@@ -0,0 +1,55 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
uniform mat4 modelViewProjectionTransform;
|
||||
uniform mat4 modelViewProjectionTransformPlane;
|
||||
|
||||
uniform float scale;
|
||||
uniform vec2 centerPixel;
|
||||
|
||||
layout(location = 0) in vec4 in_position;
|
||||
|
||||
out vec4 vs_positionScreenSpace;
|
||||
|
||||
#include "PowerScaling/powerScaling_vs.hglsl"
|
||||
|
||||
void main() {
|
||||
|
||||
// Transform in either planes or spacecraft coordinate system
|
||||
if (in_position.w == 1) {
|
||||
vec4 position = in_position;
|
||||
position.x += centerPixel.x;
|
||||
position.y += centerPixel.y;
|
||||
position.xy *= 1.0 / scale;
|
||||
vec4 positionClipSpace = modelViewProjectionTransformPlane * vec4(position.xyz, 1);
|
||||
vs_positionScreenSpace = z_normalization(positionClipSpace);
|
||||
} else {
|
||||
vec4 positionClipSpace = modelViewProjectionTransform * vec4(in_position.xyz, 1);
|
||||
vs_positionScreenSpace = z_normalization(positionClipSpace);
|
||||
}
|
||||
|
||||
gl_Position = vs_positionScreenSpace;
|
||||
}
|
||||
76
modules/solarbrowsing/shaders/spacecraftimageplane_fs.glsl
Normal file
76
modules/solarbrowsing/shaders/spacecraftimageplane_fs.glsl
Normal file
@@ -0,0 +1,76 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
uniform sampler2D imageryTexture;
|
||||
uniform sampler1D lut;
|
||||
uniform bool additiveBlending;
|
||||
|
||||
uniform float contrastValue;
|
||||
uniform float gammaValue;
|
||||
uniform float planeOpacity;
|
||||
uniform bool hasLut;
|
||||
uniform bool isCoronaGraph;
|
||||
|
||||
in vec2 vs_st;
|
||||
in vec4 vs_positionScreenSpace;
|
||||
|
||||
#include "fragment.glsl"
|
||||
|
||||
float contrast(float intensity) {
|
||||
return min(clamp(0.5 + (intensity - 0.5) * (1 + contrastValue/10.0), 0.0, 1.0), sqrt(intensity) + intensity);
|
||||
}
|
||||
|
||||
Fragment getFragment() {
|
||||
float intensityOrg = texture(imageryTexture, vec2(vs_st.x, 1 - vs_st.y)).r;
|
||||
intensityOrg = contrast(intensityOrg);
|
||||
|
||||
vec4 outColor;
|
||||
if (hasLut) {
|
||||
outColor = texture(lut, intensityOrg);
|
||||
} else {
|
||||
outColor = vec4(intensityOrg, intensityOrg, intensityOrg, 1.0);
|
||||
}
|
||||
|
||||
outColor.r = pow(outColor.r, gammaValue);
|
||||
outColor.g = pow(outColor.g, gammaValue);
|
||||
outColor.b = pow(outColor.b, gammaValue);
|
||||
|
||||
if (planeOpacity == 0.0)
|
||||
discard;
|
||||
|
||||
float absy = abs(0.5 - vs_st.y);
|
||||
float absx = abs(0.5 - vs_st.x);
|
||||
|
||||
if (isCoronaGraph && length(outColor.xyz) < 0.10 && ( (absy * absy + absx * absx) > 0.25)) discard;
|
||||
|
||||
outColor = vec4(outColor.xyz, planeOpacity);
|
||||
|
||||
Fragment frag;
|
||||
frag.color = outColor;
|
||||
frag.depth = vs_positionScreenSpace.w;
|
||||
|
||||
if (additiveBlending) {
|
||||
frag.blend = BLEND_MODE_ADDITIVE;
|
||||
}
|
||||
return frag;
|
||||
}
|
||||
55
modules/solarbrowsing/shaders/spacecraftimageplane_vs.glsl
Normal file
55
modules/solarbrowsing/shaders/spacecraftimageplane_vs.glsl
Normal file
@@ -0,0 +1,55 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
uniform mat4 modelViewProjectionTransform;
|
||||
uniform float scale;
|
||||
uniform vec2 centerPixel;
|
||||
|
||||
layout(location = 0) in vec4 in_position;
|
||||
layout(location = 1) in vec2 in_st;
|
||||
|
||||
out vec2 vs_st;
|
||||
out vec4 vs_positionScreenSpace;
|
||||
out float s;
|
||||
|
||||
#include "PowerScaling/powerScaling_vs.hglsl"
|
||||
|
||||
float HALF_SUN_RADIUS = 696701000.0; //(1391600000.0 * 0.50);
|
||||
float R_SUN = 995.90523 / 1.5877740;
|
||||
|
||||
void main() {
|
||||
// Transform the damn psc to homogenous coordinate
|
||||
vec4 position = vec4(in_position.xyz * pow(10, in_position.w), 1);
|
||||
position.x += centerPixel.x;
|
||||
position.y += centerPixel.y;
|
||||
position.xy *= 1.0 / scale;
|
||||
|
||||
vec4 positionClipSpace = modelViewProjectionTransform * position;
|
||||
vs_positionScreenSpace = z_normalization(positionClipSpace);
|
||||
gl_Position = vs_positionScreenSpace;
|
||||
|
||||
vs_st = in_st;
|
||||
}
|
||||
114
modules/solarbrowsing/shaders/spacecraftimageprojection_fs.glsl
Normal file
114
modules/solarbrowsing/shaders/spacecraftimageprojection_fs.glsl
Normal file
@@ -0,0 +1,114 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
const int MAX_SPACECRAFT_OBSERVATORY = 7;
|
||||
|
||||
in vec4 vs_positionScreenSpace;
|
||||
in vec4 clipSpace;
|
||||
in vec3 vUv[MAX_SPACECRAFT_OBSERVATORY];
|
||||
in vec3 vs_positionModelSpace;
|
||||
|
||||
uniform int numSpacecraftCameraPlanes;
|
||||
uniform dvec3 planePositionSpacecraft[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform sampler1D lut[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform sampler2D imageryTexture[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform bool hasLut[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform float contrastValue[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform float opacityValue[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform float gammaValue[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform float imageSize[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform bool isEnabled[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform bool isCoronaGraph[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform float scale[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform vec2 centerPixel[MAX_SPACECRAFT_OBSERVATORY];
|
||||
|
||||
const float SUN_RADIUS = 1391600000 * 0.5;
|
||||
|
||||
#include "fragment.glsl"
|
||||
|
||||
float contrast(float intensity, int i) {
|
||||
return min(clamp(0.5 + (intensity - 0.5) * (1 + contrastValue[i]/10.0), 0.0, 1.0), sqrt(intensity) + intensity);
|
||||
}
|
||||
|
||||
Fragment getFragment() {
|
||||
vec4 outColor = vec4(0);
|
||||
bool renderSurface = true;
|
||||
|
||||
for (int i = 0; i < numSpacecraftCameraPlanes; i++) {
|
||||
if (isCoronaGraph[i] || !isEnabled[i]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// bool isPixelHidden = dot(normalize(planePositionSpacecraft[i]), normalize(vUv[i])) < 0.0;
|
||||
// if (isPixelHidden) {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
if (planePositionSpacecraft[i].z < vUv[i].z) {
|
||||
vec3 uv = vUv[i].xyz;
|
||||
uv /= ( (SUN_RADIUS / scale[i]) * 2);
|
||||
uv += 0.5;
|
||||
|
||||
uv.x += ((centerPixel[i].x) / SUN_RADIUS) / 2.0;
|
||||
uv.y -= ((centerPixel[i].y) / SUN_RADIUS) / 2.0;
|
||||
|
||||
float intensityOrg = texture(imageryTexture[i], vec2(uv.x, 1.0 - uv.y)).r;
|
||||
intensityOrg = contrast(intensityOrg, i);
|
||||
|
||||
vec4 res;
|
||||
if (hasLut[i]) {
|
||||
res = texture(lut[i], intensityOrg);
|
||||
} else {
|
||||
res = vec4(intensityOrg, intensityOrg, intensityOrg, 1.0);
|
||||
}
|
||||
|
||||
res.r = pow(res.r, gammaValue[i]);
|
||||
res.g = pow(res.g, gammaValue[i]);
|
||||
res.b = pow(res.b, gammaValue[i]);
|
||||
|
||||
// Not initialized
|
||||
if (outColor == vec4(0)) {
|
||||
float factor2 = smoothstep(0.5, uv.x, uv.z);
|
||||
outColor = mix(res, res, factor2);
|
||||
} else {
|
||||
// Blend between
|
||||
float factor = smoothstep(0.5, 1.0 - uv.x, uv.z);
|
||||
float factor2 = smoothstep(0.5, uv.x, uv.z);
|
||||
outColor = mix(outColor, res, factor + factor2);
|
||||
}
|
||||
renderSurface = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (renderSurface) {
|
||||
// Arbitrary default shading
|
||||
vec3 diffuse = vec3((vs_positionModelSpace.y) / SUN_RADIUS) * 0.18;
|
||||
outColor = vec4(clamp(diffuse, vec3(-1.0), vec3(1.0)) + vec3(0.2, 0.21, 0.22), 1.0);
|
||||
}
|
||||
|
||||
Fragment frag;
|
||||
frag.color = outColor;
|
||||
frag.depth = vs_positionScreenSpace.w;
|
||||
|
||||
return frag;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
#version __CONTEXT__
|
||||
|
||||
const int MAX_SPACECRAFT_OBSERVATORY = 7;
|
||||
|
||||
uniform mat4 modelViewProjectionTransform;
|
||||
uniform bool isCoronaGraph[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform bool isEnabled[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform dmat4 sunToSpacecraftReferenceFrame[MAX_SPACECRAFT_OBSERVATORY];
|
||||
uniform int numSpacecraftCameraPlanes;
|
||||
|
||||
layout(location = 0) in vec4 in_position;
|
||||
layout(location = 1) in vec2 in_st;
|
||||
|
||||
out vec4 vs_positionScreenSpace;
|
||||
out vec3 vs_positionModelSpace;
|
||||
out vec4 clipSpace;
|
||||
out vec3 vUv[MAX_SPACECRAFT_OBSERVATORY];
|
||||
|
||||
#include "PowerScaling/powerScaling_vs.hglsl"
|
||||
|
||||
void main() {
|
||||
// Transform the damn psc to homogenous coordinate
|
||||
vec4 position = vec4(in_position.xyz, 1);
|
||||
vs_positionModelSpace = position.xyz;
|
||||
|
||||
// Transform the positions to the reference frame of the spacecraft to get tex coords
|
||||
for (int i = 0; i < numSpacecraftCameraPlanes; i++) {
|
||||
vUv[i] = vec3(0.0, 0.0, 0.0);
|
||||
if (isCoronaGraph[i] || !isEnabled[i]) {
|
||||
continue;
|
||||
};
|
||||
vUv[i] = vec3(sunToSpacecraftReferenceFrame[i] * dvec4(position)).xyz;
|
||||
}
|
||||
|
||||
vec4 positionClipSpace = modelViewProjectionTransform * position;
|
||||
clipSpace = positionClipSpace;
|
||||
vs_positionScreenSpace = z_normalization(positionClipSpace);
|
||||
gl_Position = vs_positionScreenSpace;
|
||||
}
|
||||
66
modules/solarbrowsing/solarbrowsingmodule.cpp
Normal file
66
modules/solarbrowsing/solarbrowsingmodule.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/solarbrowsing/solarbrowsingmodule.h>
|
||||
|
||||
#include <modules/solarbrowsing/rendering/renderablesolarimagery.h>
|
||||
#include <modules/solarbrowsing/tasks/helioviewerdownloadtask.h>
|
||||
#include <modules/solarbrowsing/rendering/renderablesolarimageryprojection.h>
|
||||
#include <modules/solarbrowsing/util/spacecraftimagerymanager.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/engine/globals.h>
|
||||
#include <openspace/engine/globalscallbacks.h>
|
||||
#include <openspace/rendering/renderable.h>
|
||||
#include <openspace/util/task.h>
|
||||
#include <openspace/util/factorymanager.h>
|
||||
#include <ghoul/misc/assert.h>
|
||||
|
||||
namespace openspace {
|
||||
|
||||
SolarBrowsingModule::SolarBrowsingModule() : OpenSpaceModule(Name) {
|
||||
}
|
||||
|
||||
SpacecraftImageryManager& SolarBrowsingModule::spacecraftImageryManager() {
|
||||
return _spacecraftImageryManager;
|
||||
}
|
||||
|
||||
void SolarBrowsingModule::internalInitialize(const ghoul::Dictionary&) {
|
||||
auto fRenderable = FactoryManager::ref().factory<Renderable>();
|
||||
ghoul_assert(fRenderable, "No renderable factory existed");
|
||||
|
||||
fRenderable->registerClass<RenderableSolarImagery>(
|
||||
"RenderableSolarImagery"
|
||||
);
|
||||
fRenderable->registerClass<RenderableSolarImageryProjection>(
|
||||
"RenderableSolarImageryProjection"
|
||||
);
|
||||
|
||||
auto fTask = FactoryManager::ref().factory<Task>();
|
||||
ghoul_assert(fTask, "No task factory existed");
|
||||
fTask->registerClass<HelioviewerDownloadTask>("HelioviewerDownloadTask");
|
||||
|
||||
|
||||
}
|
||||
|
||||
} // namespace openspace
|
||||
48
modules/solarbrowsing/solarbrowsingmodule.h
Normal file
48
modules/solarbrowsing/solarbrowsingmodule.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_SOLARBROWSING___SOLARBROWSINGMODULE___H__
|
||||
#define __OPENSPACE_MODULE_SOLARBROWSING___SOLARBROWSINGMODULE___H__
|
||||
|
||||
#include <openspace/util/openspacemodule.h>
|
||||
#include <modules/solarbrowsing/util/spacecraftimagerymanager.h>
|
||||
|
||||
namespace openspace {
|
||||
|
||||
class SolarBrowsingModule : public OpenSpaceModule {
|
||||
public:
|
||||
constexpr static const char* Name = "SolarBrowsing";
|
||||
|
||||
SolarBrowsingModule();
|
||||
SpacecraftImageryManager& spacecraftImageryManager();
|
||||
|
||||
protected:
|
||||
void internalInitialize(const ghoul::Dictionary& dictionary) override;
|
||||
|
||||
SpacecraftImageryManager _spacecraftImageryManager;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_SOLARBROWSING___SOLARBROWSINGMODULE___H__
|
||||
227
modules/solarbrowsing/tasks/helioviewerdownloadtask.cpp
Normal file
227
modules/solarbrowsing/tasks/helioviewerdownloadtask.cpp
Normal file
@@ -0,0 +1,227 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2019 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
#include <modules/solarbrowsing/tasks/helioviewerdownloadtask.h>
|
||||
#include <openspace/documentation/verifier.h>
|
||||
#include <openspace/util/spicemanager.h>
|
||||
#include <openspace/util/httprequest.h>
|
||||
#include <unordered_set>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
#include <openspace/json.h>
|
||||
#include <iostream>
|
||||
#include <format>
|
||||
|
||||
namespace {
|
||||
constexpr const char* _loggerCat = "HelioviewerDownloadTask";
|
||||
|
||||
constexpr const char* KeySourceId = "SourceId";
|
||||
constexpr const char* KeyName = "Name";
|
||||
constexpr const char* KeyInstrument = "Instrument";
|
||||
constexpr const char* KeyStartTime = "StartTime";
|
||||
constexpr const char* KeyTimeStep = "TimeStep";
|
||||
constexpr const char* KeyEndTime = "EndTime";
|
||||
constexpr const char* KeyOutputFolder = "OutputFolder";
|
||||
constexpr const char* KeyTimeKernel = "TimeKernel";
|
||||
}
|
||||
|
||||
namespace openspace {
|
||||
|
||||
documentation::Documentation HelioviewerDownloadTask::documentation() {
|
||||
using namespace documentation;
|
||||
return {
|
||||
"HelioviewerDownloadTask",
|
||||
"helioviewer_download_task",
|
||||
/*{
|
||||
{
|
||||
"Type",
|
||||
new StringEqualVerifier("HelioviewerDownloadTask"),
|
||||
Optional::No,
|
||||
"The type of this task"
|
||||
},
|
||||
{
|
||||
KeyOutputFolder,
|
||||
new StringAnnotationVerifier("A folder on the local machine"),
|
||||
Optional::No,
|
||||
"The folder where to output the downloaded jp2 files"
|
||||
},
|
||||
{
|
||||
KeyName,
|
||||
new StringVerifier,
|
||||
Optional::No,
|
||||
"Name of the spacecraft or telescope"
|
||||
},
|
||||
{
|
||||
KeyInstrument,
|
||||
new StringVerifier,
|
||||
Optional::No,
|
||||
"Name of the intrument"
|
||||
},
|
||||
{
|
||||
KeyTimeStep,
|
||||
new DoubleAnnotationVerifier("A positive number"),
|
||||
Optional::No,
|
||||
"The preferred number of seconds between each timestep. "
|
||||
"The actual timestep will be determined by the availability of data "
|
||||
"products but will never be smaller than this number. Use this for "
|
||||
"temporal downsampling."
|
||||
},
|
||||
{
|
||||
KeyStartTime,
|
||||
new StringAnnotationVerifier("A date with format YYYY-MM-DDTHH:MM:SS"),
|
||||
Optional::No,
|
||||
"The beginning of the time interval to exteract data from"
|
||||
},
|
||||
{
|
||||
KeyEndTime,
|
||||
new StringAnnotationVerifier("A date with format YYYY-MM-DDTHH:MM:SS"),
|
||||
Optional::No,
|
||||
"The end of the time interval to exteract data from"
|
||||
},
|
||||
{
|
||||
KeySourceId,
|
||||
new IntVerifier,
|
||||
Optional::No,
|
||||
"The unique identifier as specified in "
|
||||
"https://api.helioviewer.org/docs/v2/#appendix"
|
||||
},
|
||||
{
|
||||
KeyTimeKernel,
|
||||
new StringAnnotationVerifier("A file path to a cdf file"),
|
||||
Optional::No,
|
||||
"A file path to a tls spice kernel used for time",
|
||||
},
|
||||
}*/
|
||||
};
|
||||
}
|
||||
|
||||
HelioviewerDownloadTask::HelioviewerDownloadTask(const ghoul::Dictionary& dictionary) {
|
||||
_startTime = dictionary.value<std::string>(KeyStartTime);
|
||||
_endTime = dictionary.value<std::string>(KeyEndTime);
|
||||
_timeStep = dictionary.value<double>(KeyTimeStep);
|
||||
_sourceId = static_cast<int>(dictionary.value<double>(KeySourceId));
|
||||
_name = dictionary.value<std::string>(KeyName);
|
||||
_instrument = dictionary.value<std::string>(KeyInstrument);
|
||||
_outputFolder = dictionary.value<std::string>(KeyOutputFolder);
|
||||
_timeKernelPath = absPath(dictionary.value<std::string>(KeyTimeKernel));
|
||||
}
|
||||
|
||||
std::string HelioviewerDownloadTask::description() {
|
||||
return "Download data from helioviewer.";
|
||||
}
|
||||
|
||||
void HelioviewerDownloadTask::perform(const Task::ProgressCallback& progressCallback) {
|
||||
SpiceManager::ref().loadKernel(_timeKernelPath);
|
||||
|
||||
const std::string jpxRequest =
|
||||
std::format("http://api.helioviewer.org/v2/getJPX/?startTime={}&endTime={}"
|
||||
"&sourceId={}&verbose=true&cadence=true&cadence={}",
|
||||
_startTime,
|
||||
_endTime,
|
||||
_sourceId,
|
||||
_timeStep);
|
||||
|
||||
LINFO(std::format("Requesting {}", jpxRequest));
|
||||
|
||||
HttpMemoryDownload fileListing(jpxRequest);
|
||||
fileListing.start();
|
||||
fileListing.wait();
|
||||
//const HttpRequest::RequestOptions opt = { 0 };
|
||||
|
||||
//fileListing.download(opt);
|
||||
if (!fileListing.hasSucceeded()) {
|
||||
LERROR(std::format("Request to Heliviewer API failed."));
|
||||
}
|
||||
|
||||
const std::vector<char>& listingData = fileListing.downloadedData();
|
||||
const std::string listingString(listingData.begin(), listingData.end());
|
||||
|
||||
std::vector<double> frames;
|
||||
try {
|
||||
nlohmann::json json = nlohmann::json::parse(listingString.c_str());
|
||||
const auto& framesIt = json.find("frames");
|
||||
if (framesIt == json.end()) {
|
||||
LERROR(std::format("Failed to acquire frames"));
|
||||
}
|
||||
|
||||
nlohmann::json frameData = framesIt.value().get<nlohmann::json>();
|
||||
for (const auto& frame : frameData) {
|
||||
double epoch = frame.get<size_t>();
|
||||
frames.push_back(epoch);
|
||||
}
|
||||
}
|
||||
catch (...) {
|
||||
LERROR(std::format("Failed to parse json response: {}", listingString));
|
||||
return;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < frames.size(); ++i) {
|
||||
const double epoch = frames[i];
|
||||
const double j2000InEpoch = 946684800.0;
|
||||
const Time time(epoch - j2000InEpoch);
|
||||
|
||||
std::string_view formattedDate = time.ISO8601();
|
||||
const std::string imageUrl = std::format(
|
||||
"http://api.helioviewer.org/v2/getJP2Image/?date={}Z&sourceId={}",
|
||||
formattedDate,
|
||||
_sourceId
|
||||
);
|
||||
|
||||
// Format file name according to solarbrowsing convention.
|
||||
const std::string year(formattedDate.begin(), formattedDate.begin() + 4);
|
||||
const std::string month(formattedDate.begin() + 5, formattedDate.begin() + 7);
|
||||
const std::string day(formattedDate.begin() + 8, formattedDate.begin() + 10);
|
||||
const std::string hour(formattedDate.begin() + 11, formattedDate.begin() + 13);
|
||||
const std::string minute(formattedDate.begin() + 14, formattedDate.begin() + 16);
|
||||
const std::string second(formattedDate.begin() + 17, formattedDate.begin() + 19);
|
||||
const std::string millis(formattedDate.begin() + 20, formattedDate.begin() + 23);
|
||||
|
||||
const std::string outFilename = std::format(
|
||||
"{}/{}_{}_{}__{}_{}_{}_{}__{}_{}.jp2",
|
||||
_outputFolder,
|
||||
year,
|
||||
month,
|
||||
day,
|
||||
hour,
|
||||
minute,
|
||||
second,
|
||||
millis,
|
||||
_name,
|
||||
_instrument,
|
||||
static_cast<size_t>(epoch)
|
||||
);
|
||||
|
||||
HttpFileDownload imageDownload(imageUrl, absPath(outFilename));
|
||||
//imageDownload.download(opt);
|
||||
imageDownload.start();
|
||||
imageDownload.wait();
|
||||
if (!imageDownload.hasSucceeded()) {
|
||||
LERROR(std::format("Request to image {} failed.", imageUrl));
|
||||
continue;
|
||||
}
|
||||
|
||||
progressCallback(static_cast<float>(i) / static_cast<float>(frames.size()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
60
modules/solarbrowsing/tasks/helioviewerdownloadtask.h
Normal file
60
modules/solarbrowsing/tasks/helioviewerdownloadtask.h
Normal file
@@ -0,0 +1,60 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2019 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
#ifndef __OPENSPACE_MODULE_SPACE___HELIOVIEWERDOWNLOADTASK___H__
|
||||
#define __OPENSPACE_MODULE_SPACE___HELIOVIEWERDOWNLOADTASK___H__
|
||||
|
||||
#include <openspace/util/task.h>
|
||||
#include <openspace/util/time.h>
|
||||
#include <openspace/documentation/documentation.h>
|
||||
|
||||
#include <ghoul/glm.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
|
||||
namespace openspace {
|
||||
|
||||
class HelioviewerDownloadTask : public Task {
|
||||
public:
|
||||
HelioviewerDownloadTask(const ghoul::Dictionary& dictionary);
|
||||
std::string description() override;
|
||||
void perform(const Task::ProgressCallback& progressCallback) override;
|
||||
static documentation::Documentation documentation();
|
||||
|
||||
private:
|
||||
|
||||
std::string _outputFolder;
|
||||
double _timeStep;
|
||||
int _sourceId;
|
||||
std::string _name;
|
||||
std::string _instrument;
|
||||
std::string _startTime;
|
||||
std::string _endTime;
|
||||
std::filesystem::path _timeKernelPath;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_SPACE___HELIOVIEWERDOWNLOADTASK___H__
|
||||
393
modules/solarbrowsing/util/j2kcodec.cpp
Normal file
393
modules/solarbrowsing/util/j2kcodec.cpp
Normal file
@@ -0,0 +1,393 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/solarbrowsing/util/j2kcodec.h>
|
||||
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <chrono>
|
||||
#include <cstring>
|
||||
#include <format>
|
||||
#include <format_defs.h>
|
||||
#include <fstream>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#define JP2_RFC3745_MAGIC "\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a"
|
||||
#define JP2_MAGIC "\x0d\x0a\x87\x0a"
|
||||
#define J2K_CODESTREAM_MAGIC "\xff\x4f\xff\x51"
|
||||
|
||||
namespace {
|
||||
constexpr const char* _loggerCat = "J2kCodec";
|
||||
|
||||
int infileFormat(const std::string& fname) {
|
||||
const auto get_file_format = [](const char* filename) {
|
||||
unsigned int i;
|
||||
static const char* extension[] = {
|
||||
"pgx", "pnm", "pgm", "ppm", "bmp", "tif", "raw", "tga", "png", "j2k", "jp2",
|
||||
"jpt", "j2c", "jpc"
|
||||
};
|
||||
static const int format[] = {
|
||||
PGX_DFMT, PXM_DFMT, PXM_DFMT, PXM_DFMT, BMP_DFMT, TIF_DFMT, RAW_DFMT,
|
||||
TGA_DFMT, PNG_DFMT, J2K_CFMT, JP2_CFMT, JPT_CFMT, J2K_CFMT, J2K_CFMT
|
||||
};
|
||||
|
||||
const char* ext = strrchr(filename, '.');
|
||||
if (!ext) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
++ext;
|
||||
if (ext) {
|
||||
for (i = 0; i < sizeof(format) / sizeof(*format); i++) {
|
||||
if (strncmp(ext, extension[i], 3) == 0) {
|
||||
return format[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
};
|
||||
|
||||
FILE* reader = fopen(fname.c_str(), "rb");
|
||||
if (!reader) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
unsigned char buf[12];
|
||||
memset(buf, 0, 12);
|
||||
OPJ_SIZE_T l_nb_read = fread(buf, 1, 12, reader);
|
||||
fclose(reader);
|
||||
|
||||
if (l_nb_read != 12) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ext_format = get_file_format(fname.c_str());
|
||||
|
||||
if (ext_format == JPT_CFMT) {
|
||||
return JPT_CFMT;
|
||||
}
|
||||
|
||||
int magic_format;
|
||||
const char* magic_s;
|
||||
if (memcmp(buf, JP2_RFC3745_MAGIC, 12) == 0 || memcmp(buf, JP2_MAGIC, 4) == 0) {
|
||||
magic_format = JP2_CFMT;
|
||||
magic_s = ".jp2";
|
||||
}
|
||||
else if (memcmp(buf, J2K_CODESTREAM_MAGIC, 4) == 0) {
|
||||
magic_format = J2K_CFMT;
|
||||
magic_s = ".j2k or .jpc or .j2c";
|
||||
}
|
||||
else {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (magic_format == ext_format) {
|
||||
return ext_format;
|
||||
}
|
||||
|
||||
// ghoul::filesystem::File().fileExtension?
|
||||
const char* s = fname.c_str() + strlen(fname.c_str()) - 4;
|
||||
LERROR(
|
||||
std::format("Extension of file is incorrect. Found {} should be {}", s, magic_s)
|
||||
);
|
||||
return magic_format;
|
||||
}
|
||||
}
|
||||
|
||||
namespace openspace {
|
||||
|
||||
J2kCodec::J2kCodec(bool verboseMode)
|
||||
: _verboseMode(verboseMode)
|
||||
{}
|
||||
|
||||
J2kCodec::~J2kCodec() {
|
||||
destroy();
|
||||
}
|
||||
|
||||
void J2kCodec::decodeIntoBuffer(const std::string& path, unsigned char* buffer,
|
||||
int downsamplingLevel, int numQualityLayers, int x0,
|
||||
int y0, int x1, int y1, int numThreads)
|
||||
{
|
||||
auto t1 = std::chrono::high_resolution_clock::now();
|
||||
createInfileStream(path);
|
||||
setupDecoder(downsamplingLevel, numQualityLayers, x0, x1, y0, y1, numThreads);
|
||||
|
||||
// TODO(mnoven): It's a waste of resources having to decode into the image object and
|
||||
// then copy over the data to our buffer. Would be better if we could decode directly
|
||||
// into the buffer.
|
||||
// See: https://github.com/uclouvain/openjpeg/issues/837
|
||||
if (!opj_decode(_decoder, _infileStream, _image)) {
|
||||
LERROR("Could not decode image");
|
||||
destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!opj_end_decompress(_decoder, _infileStream)) {
|
||||
LERROR("Could not end decompression");
|
||||
destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO(mnoven): This is a waste. Can't specify decode precision in
|
||||
// openjpeg. See: https://github.com/uclouvain/openjpeg/issues/836)
|
||||
std::copy(
|
||||
_image->comps[0].data,
|
||||
_image->comps[0].data + _image->comps[0].w * _image->comps[0].h,
|
||||
buffer
|
||||
);
|
||||
|
||||
auto t2 = std::chrono::high_resolution_clock::now();
|
||||
if (_verboseMode) {
|
||||
LINFO(std::format(
|
||||
"Decode time of {}: {} ms",
|
||||
path,
|
||||
std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count()
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
void J2kCodec::destroy() {
|
||||
opj_stream_destroy(_infileStream);
|
||||
opj_destroy_codec(_decoder);
|
||||
opj_image_destroy(_image);
|
||||
}
|
||||
|
||||
void J2kCodec::createInfileStream(std::string filename) {
|
||||
_infileName = std::move(filename);
|
||||
|
||||
_infileStream = opj_stream_create_default_file_stream(_infileName.c_str(), OPJ_TRUE);
|
||||
if (!_infileStream) {
|
||||
LERROR(std::format("Failed to create stream from file '{}'", _infileName));
|
||||
}
|
||||
}
|
||||
|
||||
void J2kCodec::encodeAsTiles(const char* outfile, const int32_t* data,
|
||||
unsigned int imageWidth, unsigned int imageHeight,
|
||||
unsigned int tileWidth, unsigned int tileHeight,
|
||||
unsigned int numComps, unsigned int compPrec)
|
||||
{
|
||||
opj_image_cmptparm_t l_params[4];
|
||||
opj_image_cmptparm_t* l_current_param_ptr = l_params;
|
||||
// Image definition
|
||||
for (unsigned int i = 0; i < numComps; ++i) {
|
||||
l_current_param_ptr->dx = 1;
|
||||
l_current_param_ptr->dy = 1;
|
||||
l_current_param_ptr->h = static_cast<OPJ_UINT32>(imageHeight);
|
||||
l_current_param_ptr->w = static_cast<OPJ_UINT32>(imageWidth);
|
||||
l_current_param_ptr->sgnd = 0;
|
||||
l_current_param_ptr->prec = static_cast<OPJ_UINT32>(compPrec);
|
||||
l_current_param_ptr->x0 = 0;
|
||||
l_current_param_ptr->y0 = 0;
|
||||
++l_current_param_ptr;
|
||||
}
|
||||
|
||||
opj_cparameters_t encoderParams;
|
||||
opj_set_default_encoder_parameters(&encoderParams);
|
||||
encoderParams.tcp_numlayers = 1;
|
||||
encoderParams.cp_fixed_quality = 1;
|
||||
//encoderParams.tcp_distoratio[0] = 100;
|
||||
encoderParams.cp_tx0 = 0;
|
||||
encoderParams.cp_ty0 = 0;
|
||||
encoderParams.tile_size_on = OPJ_TRUE;
|
||||
encoderParams.cp_tdx = tileWidth;
|
||||
encoderParams.cp_tdy = tileHeight;
|
||||
encoderParams.irreversible = 1;
|
||||
encoderParams.numresolution = 6;
|
||||
encoderParams.prog_order = OPJ_LRCP;
|
||||
|
||||
unsigned int len = strlen(outfile);
|
||||
opj_codec_t* encoder;
|
||||
if (strcmp(outfile + len - 4, ".jp2") == 0) {
|
||||
encoder = opj_create_compress(OPJ_CODEC_JP2);
|
||||
} else {
|
||||
encoder = opj_create_compress(OPJ_CODEC_J2K);
|
||||
}
|
||||
|
||||
if (!encoder) {
|
||||
LERROR("Failed to created codec");
|
||||
destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
//Catch events using our callbacks and give a local context
|
||||
// if (_verboseMode) {
|
||||
// opj_set_info_handler(_encoder, [](const char* msg, void* client_data) {
|
||||
// (void)client_data;
|
||||
// std::clog << "[INFO]" << msg;
|
||||
// }, 00);
|
||||
// opj_set_warning_handler(_encoder, [](const char* msg, void* client_data) {
|
||||
// (void)client_data;
|
||||
// std::cerr << "[WARNING]" << msg;
|
||||
// }, 00);
|
||||
// opj_set_error_handler(_encoder, [](const char* msg, void* client_data) {
|
||||
// (void)client_data;
|
||||
// std::cerr << "[ERROR]" << msg;
|
||||
// }, 00);
|
||||
// }
|
||||
|
||||
opj_image_t* outImage = opj_image_tile_create(numComps, l_params, OPJ_CLRSPC_GRAY);
|
||||
if (!outImage) {
|
||||
LERROR("Failed to create image");
|
||||
destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
outImage->x0 = 0;
|
||||
outImage->y0 = 0;
|
||||
outImage->x1 = imageWidth;
|
||||
outImage->y1 = imageHeight;
|
||||
outImage->color_space = OPJ_CLRSPC_GRAY;
|
||||
|
||||
if (!opj_setup_encoder(encoder, &encoderParams, outImage)) {
|
||||
LERROR("Failed to set up encoder");
|
||||
destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
opj_stream_t* outStream = opj_stream_create_default_file_stream(outfile, OPJ_FALSE);
|
||||
if (!outStream) {
|
||||
LERROR("Failed to set up out stream");
|
||||
destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
// ___________ nX
|
||||
// | | | |
|
||||
// |___|___|___|
|
||||
// | | | |
|
||||
// |___|___|___|
|
||||
// | | | |
|
||||
// |___|___|___|
|
||||
// nY
|
||||
|
||||
const unsigned int numTilesX = imageWidth / tileWidth;
|
||||
const unsigned int numTilesY = imageHeight / tileHeight;
|
||||
|
||||
const OPJ_UINT32 numTiles = static_cast<OPJ_UINT32>(numTilesX) *
|
||||
static_cast<OPJ_UINT32>(numTilesY);
|
||||
const OPJ_UINT32 dataSize = static_cast<OPJ_UINT32>(tileWidth) *
|
||||
static_cast<OPJ_UINT32>(tileHeight) *
|
||||
static_cast<OPJ_UINT32>(numComps) *
|
||||
static_cast<OPJ_UINT32>(compPrec / 8);
|
||||
|
||||
std::vector<std::vector<unsigned char>> outvec(numTiles);
|
||||
|
||||
for (size_t i = 0; i < numTilesY; ++i) {
|
||||
for (size_t j = 0; j < numTilesX; j++) {
|
||||
for (size_t y = 0; y < tileHeight; ++y) {
|
||||
for (size_t x = 0; x < tileWidth; ++x) {
|
||||
const int32_t& intensity = data[
|
||||
y * imageWidth + j * tileWidth + i * tileHeight * imageWidth + x
|
||||
];
|
||||
outvec[j + i * numTilesX].push_back(intensity);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!opj_start_compress(encoder, outImage, outStream)) {
|
||||
LERROR("Failed to start compress");
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < numTiles; ++i) {
|
||||
//if (!opj_write_tile(encoder, i, &outvec[i][0], dataSize, outStream)) {
|
||||
if (!opj_write_tile(encoder, i, outvec[i].data(), dataSize, outStream)) {
|
||||
LERROR("Failed to write tile");
|
||||
}
|
||||
}
|
||||
|
||||
if (!opj_end_compress(encoder, outStream)) {
|
||||
LERROR("Failed to end compress");
|
||||
}
|
||||
|
||||
opj_image_destroy(outImage);
|
||||
opj_stream_destroy(outStream);
|
||||
opj_destroy_codec(encoder);
|
||||
}
|
||||
|
||||
void J2kCodec::setupDecoder(int downsamplingLevel, int numQualityLayers, int x0, int y0,
|
||||
int x1, int y1, int numThreads)
|
||||
{
|
||||
opj_set_default_decoder_parameters(&_decoderParams);
|
||||
_decoderParams.decod_format = infileFormat(_infileName);
|
||||
//_decoderParams.cp_layer = numQualityLayers;
|
||||
_decoderParams.cp_reduce = downsamplingLevel;
|
||||
|
||||
switch (_decoderParams.decod_format) {
|
||||
case J2K_CFMT: {
|
||||
// JPEG-2000 codestream
|
||||
_decoder = opj_create_decompress(OPJ_CODEC_J2K);
|
||||
break;
|
||||
}
|
||||
case JP2_CFMT: {
|
||||
// JPEG 2000 compressed image data
|
||||
_decoder = opj_create_decompress(OPJ_CODEC_JP2);
|
||||
break;
|
||||
}
|
||||
case JPT_CFMT: {
|
||||
// JPEG 2000, JPIP
|
||||
_decoder = opj_create_decompress(OPJ_CODEC_JPT);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
LERROR(std::format(
|
||||
"Unrecognized format for input {}"
|
||||
"[Accept only .j2k (0), .jp2 (1), or .jpc (2), got {}]",
|
||||
_decoderParams.infile,
|
||||
_decoderParams.decod_format
|
||||
));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!opj_setup_decoder(_decoder, &_decoderParams)) {
|
||||
LERROR("Failed to set up the decoder");
|
||||
return;
|
||||
}
|
||||
|
||||
// Read the main header of the codestream and if necessary the JP2 boxes
|
||||
if (!opj_read_header(_infileStream, _decoder, &_image)) {
|
||||
LERROR("Failed to read the header");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (x0 >= 0 && y0 >= 0 && x1 >= 0 && y1 >= 0) {
|
||||
if (opj_set_decode_area(_decoder, _image, x0, y0, x1, y1)) {
|
||||
LERROR("Failed to set decode area");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(mnoven): Broken internal multithreading. Crashes if we decode on multiple threads
|
||||
// Might be fixed in the future.
|
||||
// if (opj_has_thread_support()) {
|
||||
// if (!opj_codec_set_threads(_decoder, 4)) {
|
||||
// LERROR("Failed to set multi-threads threads");
|
||||
// };
|
||||
// }
|
||||
}
|
||||
|
||||
} // namespace openspace
|
||||
88
modules/solarbrowsing/util/j2kcodec.h
Normal file
88
modules/solarbrowsing/util/j2kcodec.h
Normal file
@@ -0,0 +1,88 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_SOLARBROWSING___J2KCODEC___H__
|
||||
#define __OPENSPACE_MODULE_SOLARBROWSING___J2KCODEC___H__
|
||||
|
||||
#include <memory>
|
||||
#include <openjpeg.h>
|
||||
#include <string>
|
||||
|
||||
namespace openspace {
|
||||
|
||||
/**
|
||||
* TODO(mnoven): A simple wrapper around openjpeg. As of 08/24/17 openjpeg has 3 major
|
||||
* bottlenecks which are listed below:
|
||||
*
|
||||
* 1. We can't perform decoding on multiple threads, this feature is not stable and
|
||||
* results in a segmentation fault.
|
||||
* 2. We want to be able to decode directly into our buffer without having to go through
|
||||
* the opj_image_t object.
|
||||
* See: https://github.com/uclouvain/openjpeg/issues/837
|
||||
* 3. Decoding precison is always 32-bits integers, meaning conversion has to be done if
|
||||
* 8-bytes are preferred.
|
||||
* See: https://github.com/uclouvain/openjpeg/issues/836
|
||||
*/
|
||||
|
||||
struct ImageData {
|
||||
int32_t* data;
|
||||
uint32_t w;
|
||||
uint32_t h;
|
||||
};
|
||||
|
||||
class J2kCodec {
|
||||
public:
|
||||
static constexpr const int ALL_THREADS = 0;
|
||||
|
||||
J2kCodec(bool verboseMode = false);
|
||||
~J2kCodec();
|
||||
|
||||
// Decode into a client allocated buffer
|
||||
void decodeIntoBuffer(const std::string& path, unsigned char* buffer,
|
||||
int resolutionLevel, int numQualityLayers = 1, int x0 = -1, int y0 = -1,
|
||||
int x1 = -1, int y1 = -1, int numThreads = ALL_THREADS);
|
||||
|
||||
// Experimental and not used at the moment
|
||||
void encodeAsTiles(const char* outfile, const int32_t* data, unsigned int imageWidth,
|
||||
unsigned int imageHeight, unsigned int tileWidth, unsigned int tileHeight,
|
||||
unsigned int numComps, unsigned int compPrec);
|
||||
|
||||
private:
|
||||
void destroy();
|
||||
void createInfileStream(std::string filename);
|
||||
void setupDecoder(int resolutionLevel, int numQualityLayers, int x0, int x1, int y0,
|
||||
int y1, int nThreads);
|
||||
|
||||
opj_codec_t* _decoder = nullptr;
|
||||
opj_dparameters_t _decoderParams;
|
||||
opj_image_t* _image = nullptr;
|
||||
|
||||
std::string _infileName;
|
||||
opj_stream_t* _infileStream = nullptr;
|
||||
bool _verboseMode;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_SOLARBROWSING___J2KCODEC___H__
|
||||
78
modules/solarbrowsing/util/pixelbufferobject.cpp
Normal file
78
modules/solarbrowsing/util/pixelbufferobject.cpp
Normal file
@@ -0,0 +1,78 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
#include <modules/solarbrowsing/util/pixelbufferobject.h>
|
||||
#include <iostream>
|
||||
|
||||
namespace openspace {
|
||||
|
||||
PixelBufferObject::PixelBufferObject(const int size) : _id(0), _size(size) {
|
||||
initialize();
|
||||
}
|
||||
PixelBufferObject::~PixelBufferObject() {
|
||||
glDeleteBuffers(1, &_id);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T* PixelBufferObject::mapToClientMemory(bool shouldOrphanData, int size) {
|
||||
if (shouldOrphanData) {
|
||||
glBufferData(GL_PIXEL_UNPACK_BUFFER, size, NULL, GL_STREAM_DRAW);
|
||||
}
|
||||
T* data = static_cast<T*>(
|
||||
glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, NULL, size,
|
||||
GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT));
|
||||
|
||||
return std::move(data);
|
||||
}
|
||||
|
||||
const GLuint& PixelBufferObject::id() {
|
||||
return _id;
|
||||
}
|
||||
|
||||
void PixelBufferObject::releaseMappedBuffer() {
|
||||
glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
|
||||
}
|
||||
|
||||
void PixelBufferObject::activate() {
|
||||
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, _id);
|
||||
}
|
||||
|
||||
void PixelBufferObject::deactivate() {
|
||||
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
|
||||
}
|
||||
|
||||
void PixelBufferObject::initialize() {
|
||||
glGenBuffers(1, &_id);
|
||||
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, _id);
|
||||
glBufferData(GL_PIXEL_UNPACK_BUFFER, _size, 0, GL_STREAM_DRAW);
|
||||
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
|
||||
}
|
||||
|
||||
template unsigned char* PixelBufferObject::mapToClientMemory(bool shouldOrphanData, int size);
|
||||
template float* PixelBufferObject::mapToClientMemory(bool shouldOrphanData, int size);
|
||||
template double* PixelBufferObject::mapToClientMemory(bool shouldOrphanData, int size);
|
||||
template int* PixelBufferObject::mapToClientMemory(bool shouldOrphanData, int size);
|
||||
template unsigned int* PixelBufferObject::mapToClientMemory(bool shouldOrphanData, int size);
|
||||
template long* PixelBufferObject::mapToClientMemory(bool shouldOrphanData, int size);
|
||||
template unsigned long* PixelBufferObject::mapToClientMemory(bool shouldOrphanData, int size);
|
||||
} // namespace openspace
|
||||
59
modules/solarbrowsing/util/pixelbufferobject.h
Normal file
59
modules/solarbrowsing/util/pixelbufferobject.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_SOLARBROWSING___PIXELBUFFEROBJECT___H__
|
||||
#define __OPENSPACE_MODULE_SOLARBROWSING___PIXELBUFFEROBJECT___H__
|
||||
|
||||
#include <ghoul/opengl/ghoul_gl.h>
|
||||
#include <ghoul/glm.h>
|
||||
|
||||
/**
|
||||
* Helper class for Pixel Buffer Objects
|
||||
*/
|
||||
namespace openspace {
|
||||
|
||||
class PixelBufferObject {
|
||||
public:
|
||||
PixelBufferObject(const int size);
|
||||
~PixelBufferObject();
|
||||
/**
|
||||
* If orphaned - buffer will allocate new data and return immediately.
|
||||
* Otherwise glMapBuffer will stall for GPU to finish its job.
|
||||
*/
|
||||
template<typename T>
|
||||
T* mapToClientMemory(bool shouldOrphanData, int size);
|
||||
void releaseMappedBuffer();
|
||||
void activate();
|
||||
void deactivate();
|
||||
const GLuint& id();
|
||||
|
||||
private:
|
||||
void initialize();
|
||||
GLuint _id;
|
||||
unsigned int _size = 0;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_SOLARBROWSING___PIXELBUFFEROBJECT___H__
|
||||
606
modules/solarbrowsing/util/spacecraftimagerymanager.cpp
Normal file
606
modules/solarbrowsing/util/spacecraftimagerymanager.cpp
Normal file
@@ -0,0 +1,606 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/solarbrowsing/util/spacecraftimagerymanager.h>
|
||||
|
||||
#include <openspace/engine/globals.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/rendering/transferfunction.h>
|
||||
#include <openspace/util/spicemanager.h>
|
||||
#include <openspace/util/timemanager.h>
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
#include <ghoul/misc/threadpool.h>
|
||||
#include <ghoul/opengl/texture.h>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/filesystem/file.h>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <chrono>
|
||||
#include <format>
|
||||
#include <fstream>
|
||||
#include <future>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <optional>
|
||||
|
||||
namespace {
|
||||
constexpr const char* _loggerCat = "SpacecraftImageryManager";
|
||||
constexpr const double SUN_RADIUS = 1391600000.0 * 0.5;
|
||||
} // namespace
|
||||
|
||||
namespace openspace {
|
||||
|
||||
// Conversion needed before passing dates into the spice manager
|
||||
std::string SpacecraftImageryManager::ISO8601(std::string& datetime) {
|
||||
std::string month = datetime.substr(5, 3);
|
||||
|
||||
std::string MM = "";
|
||||
if (month == "JAN") MM = "01";
|
||||
else if (month == "FEB") MM = "02";
|
||||
else if (month == "MAR") MM = "03";
|
||||
else if (month == "APR") MM = "04";
|
||||
else if (month == "MAY") MM = "05";
|
||||
else if (month == "JUN") MM = "06";
|
||||
else if (month == "JUL") MM = "07";
|
||||
else if (month == "AUG") MM = "08";
|
||||
else if (month == "SEP") MM = "09";
|
||||
else if (month == "OCT") MM = "10";
|
||||
else if (month == "NOV") MM = "11";
|
||||
else if (month == "DEC") MM = "12";
|
||||
else ghoul_assert(false, "Bad month");
|
||||
|
||||
datetime.replace(4, 5, "-" + MM + "-");
|
||||
return datetime;
|
||||
}
|
||||
|
||||
void SpacecraftImageryManager::loadTransferFunctions(const std::string& path,
|
||||
std::unordered_map<std::string, std::shared_ptr<TransferFunction>>& _tfMap)
|
||||
{
|
||||
std::filesystem::path sequenceDir(path);
|
||||
|
||||
if (!std::filesystem::is_directory(sequenceDir)) {
|
||||
LERROR(std::format("Could not load directory '{}'", sequenceDir.string()));
|
||||
}
|
||||
|
||||
std::vector<std::filesystem::path> sequencePaths = ghoul::filesystem::walkDirectory(
|
||||
sequenceDir,
|
||||
ghoul::filesystem::Recursive::Yes,
|
||||
ghoul::filesystem::Sorted::Yes
|
||||
);
|
||||
|
||||
for (const std::filesystem::path& seqPath : sequencePaths) {
|
||||
if (seqPath.extension() == ".txt") {
|
||||
std::string key = seqPath.stem().string();
|
||||
_tfMap[key] = std::make_shared<TransferFunction>(seqPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool SpacecraftImageryManager::loadMetadataFromDisk(const std::string& rootPath,
|
||||
std::unordered_map<std::string, Timeline<ImageMetadata>>& _imageMetadataMap)
|
||||
{
|
||||
|
||||
std::filesystem::path sequenceDir(rootPath);
|
||||
|
||||
if (!std::filesystem::is_directory(sequenceDir)) {
|
||||
LERROR(std::format("Could not load directory '{}'", sequenceDir.string()));
|
||||
}
|
||||
|
||||
bool metadataLoaded = false;
|
||||
|
||||
|
||||
std::vector<std::filesystem::path> sequencePaths = ghoul::filesystem::walkDirectory(
|
||||
sequenceDir,
|
||||
ghoul::filesystem::Recursive::No,
|
||||
ghoul::filesystem::Sorted::No
|
||||
);
|
||||
|
||||
for (const std::filesystem::path& seqPath : sequencePaths) {
|
||||
const std::string extension = seqPath.extension().string();
|
||||
const std::string base = seqPath.filename().string();
|
||||
const std::size_t foundCachedImageData = base.find("_cached");
|
||||
if (extension != ".txt" || foundCachedImageData == std::string::npos) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const std::string::size_type separator = base.rfind("_");
|
||||
const std::string instrument = base.substr(0, separator);
|
||||
LDEBUG(std::format("Loading instrument: {}", instrument));
|
||||
|
||||
metadataLoaded = true;
|
||||
std::ifstream myfile(seqPath);
|
||||
if (!myfile.is_open()) {
|
||||
LERROR("Failed to open metadata file");
|
||||
return false;
|
||||
}
|
||||
|
||||
int numStates;
|
||||
myfile >> numStates;
|
||||
|
||||
for (int i = 0; i < numStates; i++) {
|
||||
ImageMetadata im;
|
||||
|
||||
myfile >> std::ws; // Skip the rest of the line
|
||||
std::string date;
|
||||
std::getline(myfile, date);
|
||||
|
||||
if (date.empty()) {
|
||||
LERROR("Failed to open state metadata: date");
|
||||
return false;
|
||||
}
|
||||
|
||||
double timeObserved =
|
||||
SpiceManager::ref().ephemerisTimeFromDate(ISO8601(date));
|
||||
|
||||
std::string relPath;
|
||||
myfile >> relPath;
|
||||
|
||||
if (myfile.bad()) {
|
||||
LERROR("Failed to open state metadata: relPath");
|
||||
return false;
|
||||
}
|
||||
|
||||
im.filename = rootPath + "/" + relPath;
|
||||
|
||||
myfile >> im.fullResolution;
|
||||
|
||||
if (myfile.bad()) {
|
||||
LERROR("Failed to open state metadata: fullResolution");
|
||||
return false;
|
||||
}
|
||||
|
||||
myfile >> im.scale;
|
||||
|
||||
if (myfile.bad()) {
|
||||
LERROR("Failed to open state metadata: scale");
|
||||
return false;
|
||||
}
|
||||
|
||||
float x, y;
|
||||
myfile >> x >> y;
|
||||
im.centerPixel = glm::vec2(x,y);
|
||||
myfile >> im.isCoronaGraph;
|
||||
|
||||
if (myfile.bad()) {
|
||||
LERROR("Failed to open state metadata: isCoronaGraph");
|
||||
return false;
|
||||
}
|
||||
|
||||
_imageMetadataMap[instrument].addKeyframe(timeObserved, std::move(im));
|
||||
}
|
||||
myfile.close();
|
||||
}
|
||||
return metadataLoaded;
|
||||
}
|
||||
|
||||
void SpacecraftImageryManager::saveMetadataToDisk(const std::string& rootPath,
|
||||
std::unordered_map<std::string, Timeline<ImageMetadata>>& _imageMetadataMap)
|
||||
{
|
||||
using K = std::string;
|
||||
using V = Timeline<ImageMetadata>;
|
||||
for (const std::pair<K, V>& instrument : _imageMetadataMap) {
|
||||
std::ofstream ofs(rootPath + "/" + instrument.first + "_cached" + ".txt");
|
||||
if (!ofs.is_open()) {
|
||||
LERROR("Failed to open file");
|
||||
}
|
||||
const Timeline<ImageMetadata>& sequence = instrument.second;
|
||||
ofs << sequence.nKeyframes() << "\n";
|
||||
for (const Keyframe<ImageMetadata>& metadata : sequence.keyframes()) {
|
||||
ofs << SpiceManager::ref().dateFromEphemerisTime(
|
||||
metadata.timestamp
|
||||
) << "\n";
|
||||
const ImageMetadata& im = metadata.data;
|
||||
|
||||
std::filesystem::path filePath(im.filename);
|
||||
std::filesystem::path fileName = filePath.filename();
|
||||
|
||||
ofs << fileName.string() << "\n";
|
||||
ofs << im.fullResolution << "\n";
|
||||
ofs << im.scale << "\n";
|
||||
ofs << im.centerPixel.x << "\n";
|
||||
ofs << im.centerPixel.y << "\n";
|
||||
ofs << im.isCoronaGraph << "\n";
|
||||
}
|
||||
ofs.close();
|
||||
}
|
||||
}
|
||||
|
||||
// @TODO emiax: If openjpeg ever starts supporting reading XML metadata,
|
||||
// this implementation should be improved in order not to search the entire buffer for
|
||||
// XML data. There is an issue here:
|
||||
// (https://github.com/uclouvain/openjpeg/issues/929)
|
||||
ImageMetadata SpacecraftImageryManager::parseJ2kMetadata(
|
||||
const ghoul::filesystem::File& file)
|
||||
{
|
||||
ImageMetadata im;
|
||||
im.filename = file.path().string();
|
||||
|
||||
std::ifstream stream(file.path(), std::ios::binary | std::ios::ate);
|
||||
std::streamsize size = stream.tellg();
|
||||
stream.seekg(0, std::ios::beg);
|
||||
std::vector<char> buffer(size);
|
||||
if (!stream.read(buffer.data(), size)) {
|
||||
LERROR(std::format("Failed to read data from '{}' ", file.path()));
|
||||
return im;
|
||||
}
|
||||
std::string_view bufferView(buffer.data(), size);
|
||||
|
||||
auto extractInnerXml = [](std::string_view view, const std::string& elementName) ->
|
||||
std::optional<std::string_view>
|
||||
{
|
||||
const std::string startTag =
|
||||
std::string("<") + elementName + std::string(">");
|
||||
const std::string endTag = std::string("</") + elementName + std::string(">");
|
||||
|
||||
const auto begin =
|
||||
std::search(view.begin(), view.end(), startTag.begin(), startTag.end());
|
||||
if (begin == view.end()) {
|
||||
return std::nullopt;
|
||||
; }
|
||||
const auto afterBeginTag = begin + startTag.size();
|
||||
|
||||
const auto end =
|
||||
std::search(afterBeginTag, view.end(), endTag.begin(), endTag.end());
|
||||
if (end == view.end()) {
|
||||
return std::nullopt;
|
||||
}
|
||||
return std::string_view(&*afterBeginTag, end - afterBeginTag);
|
||||
};
|
||||
|
||||
std::optional<std::string_view> metaData = extractInnerXml(bufferView, "meta");
|
||||
if (!metaData.has_value()) {
|
||||
LERROR(std::format("Could not find metadata in {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
|
||||
std::optional<std::string_view> telescop =
|
||||
extractInnerXml(metaData.value(), "TELESCOP");
|
||||
if (!telescop.has_value()) {
|
||||
LERROR(std::format("Could not find TELESCOP tag {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
|
||||
if (std::optional<std::string_view> naxis =
|
||||
extractInnerXml(metaData.value(), "NAXIS1"))
|
||||
{
|
||||
im.fullResolution = std::stoi(std::string(naxis.value()));
|
||||
}
|
||||
else {
|
||||
LERROR(std::format("Could not find NAXIS1 tag {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
|
||||
const float halfRes = im.fullResolution / 2.f;
|
||||
|
||||
glm::vec2 centerPixel;
|
||||
if (std::optional<std::string_view> centerPixelX =
|
||||
extractInnerXml(bufferView, "CRPIX1"))
|
||||
{
|
||||
centerPixel.x = std::stof(std::string(centerPixelX.value()));
|
||||
}
|
||||
else {
|
||||
LERROR(std::format("Could not find CRPIX1 tag {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
|
||||
if (std::optional<std::string_view> centerPixelY =
|
||||
extractInnerXml(bufferView, "CRPIX2"))
|
||||
{
|
||||
centerPixel.y = std::stof(std::string(centerPixelY.value()));
|
||||
}
|
||||
else {
|
||||
LERROR(std::format("Could not find CRPIX2 tag {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
|
||||
const glm::vec2 offset = ((halfRes - centerPixel) / halfRes) * glm::vec2(SUN_RADIUS);
|
||||
im.centerPixel = offset;
|
||||
|
||||
if (telescop.value() == "SOHO") {
|
||||
if (std::optional<std::string_view> plateScl =
|
||||
extractInnerXml(metaData.value(), "PLATESCL"))
|
||||
{
|
||||
const float plateScale = std::stof(std::string(plateScl.value()));
|
||||
im.scale = 1.f / (plateScale / 2.f);
|
||||
im.isCoronaGraph = true;
|
||||
}
|
||||
else {
|
||||
LERROR(std::format("Could not find NAXIS1 tag {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
}
|
||||
else if (telescop.value() == "SDO") {
|
||||
std::optional<std::string_view> rsunObs = extractInnerXml(bufferView, "RSUN_OBS");
|
||||
std::optional<std::string_view> cDelt1 = extractInnerXml(bufferView, "CDELT1");
|
||||
|
||||
if (!rsunObs.has_value()) {
|
||||
LERROR(std::format("Could not find RSUN_OBS tag {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
if (!cDelt1.has_value()) {
|
||||
LERROR(std::format("Could not find CDELT1 tag {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
|
||||
im.scale = (std::stof(std::string(rsunObs.value())) /
|
||||
std::stof(std::string(cDelt1.value()))) /
|
||||
(im.fullResolution / 2.f);
|
||||
im.isCoronaGraph = false;
|
||||
}
|
||||
else { // Telescope is assumed to be STEREO
|
||||
std::optional<std::string_view> rsun = extractInnerXml(bufferView, "RSUN");
|
||||
std::optional<std::string_view> cDelt1 = extractInnerXml(bufferView, "CDELT1");
|
||||
if (!rsun.has_value()) {
|
||||
LERROR(std::format("Could not find RSUN_OBS tag {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
if (!cDelt1.has_value()) {
|
||||
LERROR(std::format("Could not find CDELT1 tag {}", file.path()));
|
||||
return im;
|
||||
}
|
||||
|
||||
im.scale = (std::stof(std::string(rsun.value())) /
|
||||
std::stof(std::string(cDelt1.value()))) /
|
||||
(im.fullResolution / 2.f);
|
||||
im.isCoronaGraph = false;
|
||||
|
||||
if (std::optional<std::string_view> detector =
|
||||
extractInnerXml(bufferView, "DETECTOR"))
|
||||
{
|
||||
im.isCoronaGraph =
|
||||
detector.value() == "COR1" || detector.value() == "COR2";
|
||||
}
|
||||
else {
|
||||
LWARNING(std::format(
|
||||
"Could not find DETECTOR tag {}", file.path()
|
||||
));
|
||||
}
|
||||
}
|
||||
return im;
|
||||
}
|
||||
|
||||
// This is currently not used. Instead, the parseJ2kMetadata is used,
|
||||
// extracting the data directoy from the JPEG2000 file by naively searching the entire
|
||||
// buffer for metadata, avoiding pre-processing steps.
|
||||
// If you want to use this, you need to extract metadata to json first,
|
||||
// for example using: https://github.com/novalain/j2kcodec
|
||||
ImageMetadata SpacecraftImageryManager::parseJsonMetadata(
|
||||
const ghoul::filesystem::File& file)
|
||||
{
|
||||
ImageMetadata im;
|
||||
im.filename = file.path().string();
|
||||
const std::string filename = std::string(file.path().string() + ".json");
|
||||
|
||||
if (!std::filesystem::exists(filename)) {
|
||||
LERROR(std::format("'{}' has no specified json metadata", file.path()));
|
||||
// TODO: Hardcoded values, when there are no json files.
|
||||
return im;
|
||||
}
|
||||
|
||||
// Parse JSON metadata
|
||||
using json = nlohmann::json;
|
||||
|
||||
std::ifstream i(filename);
|
||||
if (i.fail()) {
|
||||
LERROR(std::format("Error opening file '{}'", filename));
|
||||
}
|
||||
|
||||
json j;
|
||||
i >> j;
|
||||
const json data = j["meta"]["fits"];
|
||||
|
||||
if (data.is_null()) {
|
||||
LERROR(std::format("Error in metadata '{}'", filename));
|
||||
}
|
||||
|
||||
json value = data["TELESCOP"];
|
||||
if (value.is_null() && !value.is_string()) {
|
||||
LERROR("Metadata did contain information about type of spacecraft");
|
||||
return im;
|
||||
}
|
||||
// TODO: value might not exist
|
||||
std::string spacecraftType = value;
|
||||
|
||||
value = data["NAXIS1"];
|
||||
if (value.is_null()) {
|
||||
LERROR("Metadata did not contain information about resolution");
|
||||
}
|
||||
|
||||
const std::string sFullResolution = value;
|
||||
im.fullResolution = std::stoi(sFullResolution);
|
||||
// Special case of sdo - RSUN is given in pixels
|
||||
// For SOHO the radius of the sun is not specified - we instead use platescl
|
||||
if (spacecraftType == "SOHO") {
|
||||
const std::string sScale = data["PLATESCL"];
|
||||
const float plateScale = stof(sScale);
|
||||
im.scale = 1.f / (plateScale / 2.f);
|
||||
im.isCoronaGraph = true;
|
||||
} else {
|
||||
float sunRadiusPixels = 0.f;
|
||||
// SDO has RSUN specified in pixels
|
||||
if (spacecraftType == "SDO") {
|
||||
value = data["RSUN_OBS"];
|
||||
if (value.is_null()) {
|
||||
LERROR("SDO Metadata: RSUN_OBS missing!");
|
||||
}
|
||||
std::string sSunRadiusArcsec = value;
|
||||
value = data["CDELT1"];
|
||||
if (value.is_null()) {
|
||||
LERROR("SDO Metadata: CDELT1 missing!");
|
||||
}
|
||||
std::string sCdelt1 = value;
|
||||
const float cdelt1 = stof(sCdelt1);
|
||||
const float sunRadiusArcsec = stof(sSunRadiusArcsec);
|
||||
sunRadiusPixels = sunRadiusArcsec / cdelt1;
|
||||
im.isCoronaGraph = false;
|
||||
} else {
|
||||
// STEREO has RSUN specified in arcsecs - need to divide by factor
|
||||
std::string sCdelt1 = data["CDELT1"];
|
||||
const float cdelt1 = stof(sCdelt1);
|
||||
std::string sSunRadiusArcsec = data["RSUN"];
|
||||
const float sunRadiusArcsec = stof(sSunRadiusArcsec);
|
||||
sunRadiusPixels = sunRadiusArcsec / cdelt1;
|
||||
|
||||
value = data["DETECTOR"];
|
||||
if (value.is_null()) {
|
||||
LERROR("No observer specified in Stereo");
|
||||
}
|
||||
|
||||
std::string sObserver = value;
|
||||
if (sObserver == "COR1" || sObserver == "COR2") {
|
||||
im.isCoronaGraph = true;
|
||||
} else {
|
||||
im.isCoronaGraph = false;
|
||||
}
|
||||
}
|
||||
float scale = sunRadiusPixels / (im.fullResolution / 2.f);
|
||||
im.scale = scale;
|
||||
}
|
||||
|
||||
const std::string sCenterPixelX = data["CRPIX1"];
|
||||
const std::string sCenterPixelY = data["CRPIX2"];
|
||||
|
||||
const float centerPixelX = stof(sCenterPixelX);
|
||||
const float centerPixelY = stof(sCenterPixelY);
|
||||
const float halfRes = im.fullResolution / 2.f;
|
||||
|
||||
const float offsetX = ((halfRes - centerPixelX) / halfRes) * SUN_RADIUS;
|
||||
const float offsetY = ((halfRes - centerPixelY) / halfRes) * SUN_RADIUS;
|
||||
|
||||
im.centerPixel = glm::vec2(offsetX, offsetY);
|
||||
|
||||
return im;
|
||||
}
|
||||
|
||||
void SpacecraftImageryManager::loadImageMetadata(const std::string& path,
|
||||
std::unordered_map<std::string, Timeline<ImageMetadata>>& _imageMetadataMap)
|
||||
{
|
||||
std::unordered_map<std::string, Timeline<ImageMetadata>> result;
|
||||
|
||||
LDEBUG("Begin loading spacecraft imagery metadata");
|
||||
|
||||
// Pre-processed data
|
||||
if (loadMetadataFromDisk(path, result)) {
|
||||
_imageMetadataMap.insert(result.begin(), result.end());
|
||||
return;
|
||||
}
|
||||
|
||||
std::filesystem::path sequenceDir(path);
|
||||
|
||||
if (!std::filesystem::is_directory(sequenceDir)) {
|
||||
LERROR(std::format("Could not load directory '{}'", sequenceDir.string()));
|
||||
}
|
||||
|
||||
|
||||
LDEBUG("Loading sequence directory");
|
||||
std::vector<std::filesystem::path> sequencePaths = ghoul::filesystem::walkDirectory(
|
||||
sequenceDir,
|
||||
ghoul::filesystem::Recursive::Yes,
|
||||
ghoul::filesystem::Sorted::Yes
|
||||
);
|
||||
|
||||
LDEBUG("Filtering data values");
|
||||
sequencePaths.erase(
|
||||
std::remove_if(
|
||||
sequencePaths.begin(),
|
||||
sequencePaths.end(),
|
||||
[](const std::filesystem::path& path) {
|
||||
const std::string& ext = path.extension().string();
|
||||
return (ext != ".jp2") && (ext != ".j2k");
|
||||
}
|
||||
),
|
||||
sequencePaths.end()
|
||||
);
|
||||
|
||||
|
||||
LDEBUG("Reading meta data");
|
||||
size_t count = 0;
|
||||
|
||||
std::mutex spiceAndPushMutex;
|
||||
|
||||
std::vector<std::future<void>> futures;
|
||||
futures.reserve(sequencePaths.size());
|
||||
|
||||
std::cout << '\n';
|
||||
auto exec = [&](const std::filesystem::path& seqPath) {
|
||||
ghoul::filesystem::File currentFile(seqPath);
|
||||
std::string fileName = seqPath.filename().string();
|
||||
size_t posSatelliteInfoStart = fileName.rfind("__") + 2;
|
||||
std::string satelliteInfo = fileName.substr(posSatelliteInfoStart);
|
||||
|
||||
// Name
|
||||
size_t posSatelliteNameEnd = satelliteInfo.find_first_of("_");
|
||||
std::string satelliteName = satelliteInfo.substr(0, posSatelliteNameEnd);
|
||||
|
||||
// Instrument
|
||||
size_t posInstrumentNameStart = posSatelliteNameEnd + 1;
|
||||
std::string instrumentName = satelliteInfo.substr(posInstrumentNameStart);
|
||||
size_t dot = instrumentName.rfind(".");
|
||||
instrumentName = instrumentName.substr(0, dot);
|
||||
|
||||
// Time @TODO (anden88 2025-12-02): Parse the time string from file in a more
|
||||
// robust way?
|
||||
std::vector<std::string> tokens;
|
||||
std::stringstream ss;
|
||||
ss.str(seqPath.filename().string());
|
||||
std::string item;
|
||||
while (std::getline(ss, item, '_')) {
|
||||
tokens.push_back(item);
|
||||
}
|
||||
if (tokens.size() >= 8) {
|
||||
std::string time = tokens[0] + "-" + tokens[1] + "-" +
|
||||
tokens[2] + "T" + tokens[4] + ":" +
|
||||
tokens[5] + ":" + tokens[6] + "." + tokens[7];
|
||||
|
||||
ImageMetadata im = parseJ2kMetadata(currentFile);
|
||||
spiceAndPushMutex.lock();
|
||||
result[instrumentName].addKeyframe(
|
||||
global::timeManager->time().convertTime(time),
|
||||
std::move(im)
|
||||
);
|
||||
spiceAndPushMutex.unlock();
|
||||
}
|
||||
++count;
|
||||
|
||||
if (count % 10000 == 0) {
|
||||
LINFO(std::format(
|
||||
"Processing image {} out of {} ", count, sequencePaths.size()
|
||||
));
|
||||
}
|
||||
};
|
||||
|
||||
for (const std::filesystem::path& seqPath : sequencePaths) {
|
||||
exec(seqPath);
|
||||
}
|
||||
|
||||
saveMetadataToDisk(path, result);
|
||||
_imageMetadataMap.insert(result.begin(), result.end());
|
||||
|
||||
LDEBUG("Finish loading imagery metadata");
|
||||
LDEBUG("Saving imagery metadata");
|
||||
|
||||
LDEBUG(std::format("{} images loaded", count));
|
||||
LDEBUG(std::format("{} values in metamap", _imageMetadataMap.size()));
|
||||
}
|
||||
|
||||
} //namespace openspace
|
||||
69
modules/solarbrowsing/util/spacecraftimagerymanager.h
Normal file
69
modules/solarbrowsing/util/spacecraftimagerymanager.h
Normal file
@@ -0,0 +1,69 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_SOLARBROWSING___SPACECRAFTIMAGERYMANAGER___H__
|
||||
#define __OPENSPACE_MODULE_SOLARBROWSING___SPACECRAFTIMAGERYMANAGER___H__
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <valarray>
|
||||
#include <unordered_map>
|
||||
#include <openspace/util/timeline.h>
|
||||
#include <modules/solarbrowsing/util/structs.h>
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
#define IMG_PRECISION unsigned char
|
||||
|
||||
namespace ghoul {
|
||||
namespace opengl { class Texture; }
|
||||
namespace filesystem { class File; }
|
||||
} // namespace ghoul
|
||||
|
||||
namespace openspace {
|
||||
|
||||
class TransferFunction;
|
||||
|
||||
class SpacecraftImageryManager {
|
||||
public:
|
||||
void loadTransferFunctions(const std::string& path,
|
||||
std::unordered_map<std::string, std::shared_ptr<TransferFunction>>& _tfMap);
|
||||
void loadImageMetadata(const std::string& path,
|
||||
std::unordered_map<std::string, Timeline<ImageMetadata>>& _imageMetadataMap);
|
||||
|
||||
private:
|
||||
ImageMetadata parseJ2kMetadata(const ghoul::filesystem::File& file);
|
||||
ImageMetadata parseJsonMetadata(const ghoul::filesystem::File& file);
|
||||
|
||||
std::string ISO8601(std::string& datetime);
|
||||
|
||||
bool loadMetadataFromDisk(const std::string& rootPath,
|
||||
std::unordered_map<std::string, Timeline<ImageMetadata>>& _imageMetadataMap);
|
||||
|
||||
void saveMetadataToDisk(const std::string& rootPath,
|
||||
std::unordered_map<std::string, Timeline<ImageMetadata>>& _imageMetadataMap);
|
||||
};
|
||||
|
||||
} //namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_SOLARBROWSING___SPACECRAFTIMAGERYMANAGER___H__
|
||||
59
modules/solarbrowsing/util/structs.h
Normal file
59
modules/solarbrowsing/util/structs.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_SOLARBROWSING___STRUCTS___H__
|
||||
#define __OPENSPACE_MODULE_SOLARBROWSING___STRUCTS___H__
|
||||
|
||||
#include <ghoul/glm.h>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
//namespace openspace::solarbrowsing {
|
||||
namespace openspace {
|
||||
|
||||
// Assume everything in arcsec to minimize metadata
|
||||
struct ImageMetadata {
|
||||
std::string filename;
|
||||
int fullResolution;
|
||||
float scale;
|
||||
glm::vec2 centerPixel;
|
||||
bool isCoronaGraph;
|
||||
};
|
||||
|
||||
struct SolarImageData {
|
||||
unsigned char* data;
|
||||
const ImageMetadata* im;
|
||||
double timeObserved;
|
||||
};
|
||||
|
||||
struct DecodeData {
|
||||
const ImageMetadata* im;
|
||||
unsigned int resolutionLevel;
|
||||
double timeObserved;
|
||||
bool verboseMode;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // __OPENSPACE_MODULE_SOLARBROWSING___STRUCTS___H__
|
||||
Reference in New Issue
Block a user