Panda3D
Loading...
Searching...
No Matches
mayaShader.h
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file mayaShader.h
10 * @author drose
11 * @date 2000-02-01
12 */
13
14#ifndef MAYASHADER_H
15#define MAYASHADER_H
16
17#include "pandatoolbase.h"
18#include "mayaShaderColorDef.h"
19
20#include "luse.h"
21#include "lmatrix.h"
22#include "namable.h"
23
24
25/**
26 * Corresponds to a single "shader" in Maya. This extracts out all the
27 * parameters of a Maya shader that we might care about. There are many more
28 * parameters that we don't care about or don't know enough to extract.
29 */
30class MayaShader : public Namable {
31public:
32 MayaShader(MObject engine, bool legacy_shader);
34
35 void output(std::ostream &out) const;
36 void write(std::ostream &out) const;
37
38private:
39 bool find_textures_modern(MObject shader);
40 bool find_textures_legacy(MObject shader);
41
42public:
43 void collect_maps();
44 bool _legacy_mode;
45
46 MayaShaderColorList _all_maps;
47
48public: // relevant only to modern mode.
49
50 LColord _flat_color;
51
52 MayaShaderColorList _color_maps;
53 MayaShaderColorList _trans_maps;
54 MayaShaderColorList _normal_maps;
55 MayaShaderColorList _glow_maps;
56 MayaShaderColorList _gloss_maps;
57 MayaShaderColorList _height_maps;
58
60
61private:
62 void calculate_pairings();
63 bool try_pair(MayaShaderColorDef *map1,
65 bool perfect);
66 std::string get_file_prefix(const std::string &fn);
67 bool _legacy_shader;
68public: // relevant only to legacy mode.
70 MayaShaderColorDef _transparency;
71 LColor get_rgba(size_t idx=0) const;
72 MayaShaderColorDef *get_color_def(size_t idx=0) const;
73};
74
75INLINE std::ostream &operator << (std::ostream &out, const MayaShader &shader) {
76 shader.output(out);
77 return out;
78}
79
80#endif
This defines the various attributes that Maya may associate with the "color" channel for a particular...
Corresponds to a single "shader" in Maya.
Definition mayaShader.h:30
MayaShader(MObject engine, bool legacy_shader)
Reads the Maya "shading engine" to determine the relevant shader properties.
void collect_maps()
Recalculates the all_maps list.
LColor get_rgba(size_t idx=0) const
Returns the overall color of the shader as a single-precision rgba value, where the alpha component r...
MayaShaderColorDef * get_color_def(size_t idx=0) const
This is part of the deprecated codepath.
void bind_uvsets(MayaFileToUVSetMap &map)
Assigns the uvset_name of each MayaShaderColorDef using the given file-to- uvset map.
A base class for all things which can have a name.
Definition namable.h:26
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.