Cumulia Illustrator Rendering Engine v2.1.0
A Rendering engine for industrial CAD/CAE model and optimized for greatest performance
 
Loading...
Searching...
No Matches
material.h
1//##################################################################################################
2//
3// Copyright (c) 2024 Beijing Qiongqi Tech Co.,Ltd. All rights reserved.
4
5// This source code is confidential and proprietary to Beijing Qiongqi Tech Co.,Ltd(The Holder).
6// Any unauthorized use, copying, modification, or distribution of the code is strictly prohibited.
7// Any user shall obtain authorizaition from the Holder before modifying the source code. And the user shall not
8// sublicense, sell, distribute, or transfer the source code, whether in original or modified form, to any third party
9// without the prior written consent of the Holder.
10
11// This copyright notice and permission grant shall be included in all copies or substantial portions of the source code.
12
13// Author Cumulia Illustrator
14// Date 2025-08-05
15// Version V2.1.0
16//##################################################################################################
17
18#pragma once
19
20#include <cilcore.h>
21
22#include <memory>
23
24namespace cil
25{
26 std::shared_ptr<Material> _material_unlight(const std::shared_ptr<Color3f>& color);
27 std::shared_ptr<Material> _material_unlight(const std::shared_ptr<Image2D>& image);
28 std::shared_ptr<Material> _material_unlight(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range);
29 std::shared_ptr<Material> _material_unlight(const std::shared_ptr<ImageCube>& image);
30
31 std::shared_ptr<Material> _material_head_light(const std::shared_ptr<Color3f>& color);
32 std::shared_ptr<Material> _material_head_light(const std::shared_ptr<Image2D>& image);
33 std::shared_ptr<Material> _material_head_light(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range);
34 std::shared_ptr<Material> _material_head_light(const std::shared_ptr<ImageCube>& image);
35
36 std::shared_ptr<Material> _material_strip(const std::shared_ptr<Color3f>& color);
37 std::shared_ptr<Material> _material_strip(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Integer>& strips);
38
39 std::shared_ptr<Material> _material_scale(const std::shared_ptr<Color3f>& color);
40 std::shared_ptr<Material> _material_scale(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range);
41
42 std::shared_ptr<Material> _material_gouraud(const std::shared_ptr<Color3f>& color);
43 std::shared_ptr<Material> _material_gouraud(const std::shared_ptr<Image2D>& image);
44 std::shared_ptr<Material> _material_gouraud(const std::shared_ptr<ImageCube>& image);
45
46 std::shared_ptr<Material> _material_flat(const std::shared_ptr<Color3f>& color);
47
48 std::shared_ptr<Material> _material_phong(const std::shared_ptr<Color3f>& color);
49 std::shared_ptr<Material> _material_phong(const std::shared_ptr<Image2D>& image);
50 std::shared_ptr<Material> _material_phong(const std::shared_ptr<ImageCube>& image);
51
52 std::shared_ptr<Material> _material_outline(const std::shared_ptr<Color3f>& color);
53 std::shared_ptr<Material> _material_outline(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range);
54 std::shared_ptr<Material> _material_shaded(const std::shared_ptr<Color3f>& color);
55 std::shared_ptr<Material> _material_shaded(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range);
56 std::shared_ptr<Material> _material_unlight_transparent(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& alpha);
57 std::shared_ptr<Material> _material_transparent(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& alpha);
58 std::shared_ptr<Material> _material_transparent(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& alpha);
59 std::shared_ptr<Material> _material_sphere(const std::shared_ptr<Color3f>& color, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& pointSize);
60 std::shared_ptr<Material> _material_sphere(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& pointSize);
61 std::shared_ptr<Material> _material_fixed_sphere(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize);
62 std::shared_ptr<Material> _material_fixed_sphere(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& pointSize);
63
64 std::shared_ptr<Material> _material_vector(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& factor);
65 std::shared_ptr<Material> _material_vector(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& factor);
66 std::shared_ptr<Material> _material_fixed_vector(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& factor);
67 std::shared_ptr<Material> _material_fixed_vector(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& factor);
68
69 std::shared_ptr<Material> _material_block(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& factor);
70 std::shared_ptr<Material> _material_block(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& factor);
71 std::shared_ptr<Material> _material_block_outline(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& factor);
72
73 std::shared_ptr<Material> _material_streamline(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& width);
74 std::shared_ptr<Material> _material_streamline(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& width);
75 std::shared_ptr<Material> _material_ribbon(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& width);
76 std::shared_ptr<Material> _material_ribbon(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& width);
77 std::shared_ptr<Material> _material_cylinder(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& width);
78 std::shared_ptr<Material> _material_cylinder(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& width);
79
80 std::shared_ptr<Material> _material_offset_outline(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& factor);
81 std::shared_ptr<Material> _material_offset_outline(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& factor);
82 std::shared_ptr<Material> _material_offset_shaded(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& factor);
83 std::shared_ptr<Material> _material_offset_shaded(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& factor);
84 std::shared_ptr<Material> _material_offset_strip(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& factor);
85 std::shared_ptr<Material> _material_offset_strip(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Integer>& strips, const std::shared_ptr<Real>& factor);
86 std::shared_ptr<Material> _material_offset_transparent(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& alpha, const std::shared_ptr<Real>& factor);
87 std::shared_ptr<Material> _material_offset_transparent(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& alpha, const std::shared_ptr<Real>& factor);
88 std::shared_ptr<Material> _material_offset_sphere(const std::shared_ptr<Color3f>& color, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& pointSize, const std::shared_ptr<Real>& factor);
89 std::shared_ptr<Material> _material_offset_sphere(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& pointSize, const std::shared_ptr<Real>& factor);
90 std::shared_ptr<Material> _material_offset_fixed_sphere(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize, const std::shared_ptr<Real>& factor);
91 std::shared_ptr<Material> _material_offset_fixed_sphere(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& pointSize, const std::shared_ptr<Real>& factor);
92 std::shared_ptr<Material> _material_offset_cylinder(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& factor);
93 std::shared_ptr<Material> _material_offset_cylinder(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& factor);
94
95 std::shared_ptr<Material> _material_forward_ribbon(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& currentTime);
96 std::shared_ptr<Material> _material_forward_ribbon(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& currentTime);
97 std::shared_ptr<Material> _material_forward_cylinder(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& currentTime);
98 std::shared_ptr<Material> _material_forward_cylinder(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& currentTime);
99 std::shared_ptr<Material> _material_forward_sphere(const std::shared_ptr<Color3f>& color, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& pointSize, const std::shared_ptr<Real>& currentTime);
100 std::shared_ptr<Material> _material_forward_sphere(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& pointSize, const std::shared_ptr<Real>& currentTime);
101 std::shared_ptr<Material> _material_forward_fixed_sphere(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize, const std::shared_ptr<Real>& currentTime);
102 std::shared_ptr<Material> _material_forward_fixed_sphere(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& pointSize, const std::shared_ptr<Real>& currentTime);
103 std::shared_ptr<Material> _material_meteor_cylinder(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& length, const std::shared_ptr<Real>& currentTime);
104 std::shared_ptr<Material> _material_meteor_cylinder(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& length, const std::shared_ptr<Real>& currentTime);
105 std::shared_ptr<Material> _material_meteor_line(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& length, const std::shared_ptr<Real>& currentTime);
106 std::shared_ptr<Material> _material_meteor_line(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& width, const std::shared_ptr<Real>& length, const std::shared_ptr<Real>& currentTime);
107
108 std::shared_ptr<Material> _material_point_sprites_square(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize = _real(24.0));
109 std::shared_ptr<Material> _material_point_sprites_disc(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize = _real(24.0));
110 std::shared_ptr<Material> _material_point_sprites_spiral(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize = _real(24.0));
111 std::shared_ptr<Material> _material_point_sprites_rose(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize = _real(24.0));
112 std::shared_ptr<Material> _material_point_sprites_sphere(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize = _real(24.0));
113 std::shared_ptr<Material> _material_point_sprites_star(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize = _real(24.0));
114 std::shared_ptr<Material> _material_point_sprites_circle(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize = _real(24.0));
115 std::shared_ptr<Material> _material_point_sprites_grid(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& pointSize = _real(24.0));
116 std::shared_ptr<Material> _material_point_sprites_icon(const std::shared_ptr<Image2D>& image, const std::shared_ptr<Real>& pointSize = _real(24.0));
117
118 std::shared_ptr<Material> _material_cloud(const std::shared_ptr<Color3f>& color, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& radius);
119 std::shared_ptr<Material> _material_cloud(const std::shared_ptr<Image2D>& image, const std::shared_ptr<MinMax>& range, const std::shared_ptr<Real>& radius);
120
121 enum class LineStyle
122 {
123 Solid,
124 Dash,
125 Dot,
126 DashDot,
128 };
129 std::shared_ptr<Material> _material_line(const std::shared_ptr<Color3f>& color, const std::shared_ptr<Real>& width = _real(1.0f), LineStyle style = LineStyle::Solid);
130}
Definition decal.h:23
std::shared_ptr< Material > _material_scale(const std::shared_ptr< Color3f > &color)
std::shared_ptr< Material > _material_point_sprites_disc(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize=_real(24.0))
std::shared_ptr< Material > _material_meteor_cylinder(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &width, const std::shared_ptr< Real > &length, const std::shared_ptr< Real > &currentTime)
LineStyle
Definition material.h:122
std::shared_ptr< Material > _material_unlight_transparent(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &alpha)
std::shared_ptr< Material > _material_sphere(const std::shared_ptr< Color3f > &color, const std::shared_ptr< MinMax > &range, const std::shared_ptr< Real > &pointSize)
std::shared_ptr< Material > _material_block(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_point_sprites_rose(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize=_real(24.0))
std::shared_ptr< Material > _material_block_outline(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_offset_cylinder(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &width, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_head_light(const std::shared_ptr< Color3f > &color)
std::shared_ptr< Material > _material_forward_sphere(const std::shared_ptr< Color3f > &color, const std::shared_ptr< MinMax > &range, const std::shared_ptr< Real > &pointSize, const std::shared_ptr< Real > &currentTime)
std::shared_ptr< Material > _material_streamline(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &width)
std::shared_ptr< Material > _material_offset_outline(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_vector(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_gouraud(const std::shared_ptr< Color3f > &color)
std::shared_ptr< Material > _material_point_sprites_grid(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize=_real(24.0))
std::shared_ptr< Material > _material_transparent(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &alpha)
std::shared_ptr< Material > _material_unlight(const std::shared_ptr< Color3f > &color)
std::shared_ptr< Material > _material_strip(const std::shared_ptr< Color3f > &color)
std::shared_ptr< Material > _material_offset_shaded(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_cloud(const std::shared_ptr< Color3f > &color, const std::shared_ptr< MinMax > &range, const std::shared_ptr< Real > &radius)
std::shared_ptr< Material > _material_meteor_line(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &width, const std::shared_ptr< Real > &length, const std::shared_ptr< Real > &currentTime)
std::shared_ptr< Material > _material_point_sprites_circle(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize=_real(24.0))
std::shared_ptr< Material > _material_cylinder(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &width)
std::shared_ptr< Material > _material_point_sprites_sphere(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize=_real(24.0))
std::shared_ptr< Material > _material_point_sprites_icon(const std::shared_ptr< Image2D > &image, const std::shared_ptr< Real > &pointSize=_real(24.0))
std::shared_ptr< Material > _material_phong(const std::shared_ptr< Color3f > &color)
std::shared_ptr< Material > _material_point_sprites_spiral(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize=_real(24.0))
std::shared_ptr< Material > _material_flat(const std::shared_ptr< Color3f > &color)
std::shared_ptr< Material > _material_offset_sphere(const std::shared_ptr< Color3f > &color, const std::shared_ptr< MinMax > &range, const std::shared_ptr< Real > &pointSize, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_point_sprites_square(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize=_real(24.0))
std::shared_ptr< Material > _material_forward_ribbon(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &width, const std::shared_ptr< Real > &currentTime)
std::shared_ptr< Material > _material_forward_fixed_sphere(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize, const std::shared_ptr< Real > &currentTime)
std::shared_ptr< Material > _material_ribbon(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &width)
std::shared_ptr< Material > _material_shaded(const std::shared_ptr< Color3f > &color)
std::shared_ptr< Material > _material_fixed_sphere(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize)
std::shared_ptr< Material > _material_fixed_vector(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_point_sprites_star(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize=_real(24.0))
RealPtr _real()
std::shared_ptr< Material > _material_forward_cylinder(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &width, const std::shared_ptr< Real > &currentTime)
std::shared_ptr< Material > _material_offset_fixed_sphere(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &pointSize, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_offset_transparent(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &alpha, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_offset_strip(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &factor)
std::shared_ptr< Material > _material_line(const std::shared_ptr< Color3f > &color, const std::shared_ptr< Real > &width=_real(1.0f), LineStyle style=LineStyle::Solid)
std::shared_ptr< Material > _material_outline(const std::shared_ptr< Color3f > &color)