forked from MakieOrg/Makie.jl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
scenes.jl
65 lines (54 loc) · 2.78 KB
/
scenes.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
@testset "Scenes" begin
scene = Scene()
@test propertynames(scene) == fieldnames(Scene)
@testset "getproperty(scene, :$field)" for field in fieldnames(Scene)
@test getproperty(scene, field) !== missing # well, just don't error
end
@test theme(nothing, :nonexistant, default=1) == 1
@test theme(scene, :nonexistant, default=1) == 1
end
@testset "Lighting" begin
@testset "Shading default" begin
plot = (attributes = Attributes(), ) # simplified "plot"
# Based on number of lights
lights = Makie.AbstractLight[]
Makie.default_shading!(plot, lights)
@test !haskey(plot.attributes, :shading)
plot.attributes[:shading] = Observable(Makie.automatic)
Makie.default_shading!(plot, lights)
@test to_value(plot.attributes[:shading]) === NoShading
plot.attributes[:shading] = Observable(Makie.automatic)
push!(lights, AmbientLight(RGBf(0.1, 0.1, 0.1)))
Makie.default_shading!(plot, lights)
@test to_value(plot.attributes[:shading]) === FastShading
plot.attributes[:shading] = Observable(Makie.automatic)
push!(lights, DirectionalLight(RGBf(0.1, 0.1, 0.1), Vec3f(1)))
Makie.default_shading!(plot, lights)
@test to_value(plot.attributes[:shading]) === FastShading
plot.attributes[:shading] = Observable(Makie.automatic)
push!(lights, PointLight(RGBf(0.1, 0.1, 0.1), Point3f(0)))
Makie.default_shading!(plot, lights)
@test to_value(plot.attributes[:shading]) === MultiLightShading
# Based on light types
plot.attributes[:shading] = Observable(Makie.automatic)
lights = [SpotLight(RGBf(0.1, 0.1, 0.1), Point3f(0), Vec3f(1), Vec2f(0.2, 0.3))]
Makie.default_shading!(plot, lights)
@test to_value(plot.attributes[:shading]) === MultiLightShading
plot.attributes[:shading] = Observable(Makie.automatic)
lights = [EnvironmentLight(1.0, rand(2,2))]
Makie.default_shading!(plot, lights)
@test to_value(plot.attributes[:shading]) === NoShading # only affects RPRMakie so skipped here
plot.attributes[:shading] = Observable(Makie.automatic)
lights = [PointLight(RGBf(0.1, 0.1, 0.1), Point3f(0))]
Makie.default_shading!(plot, lights)
@test to_value(plot.attributes[:shading]) === MultiLightShading
plot.attributes[:shading] = Observable(Makie.automatic)
lights = [PointLight(RGBf(0.1, 0.1, 0.1), Point3f(0), Vec2f(0.1, 0.2))]
Makie.default_shading!(plot, lights)
@test to_value(plot.attributes[:shading]) === MultiLightShading
# keep existing shading type
lights = Makie.AbstractLight[]
Makie.default_shading!(plot, lights)
@test to_value(plot.attributes[:shading]) === MultiLightShading
end
end