Diligent Engine  v.2.4.g
HLSL2GLSLConverter.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2021 Diligent Graphics LLC
3  * Copyright 2015-2019 Egor Yusov
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * In no event and under no legal theory, whether in tort (including negligence),
18  * contract, or otherwise, unless required by applicable law (such as deliberate
19  * and grossly negligent acts) or agreed to in writing, shall any Contributor be
20  * liable for any damages, including any direct, indirect, special, incidental,
21  * or consequential damages of any character arising as a result of this License or
22  * out of the use or inability to use the software (including but not limited to damages
23  * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
24  * all other commercial damages or losses), even if such Contributor has been advised
25  * of the possibility of such damages.
26  */
27 
28 #pragma once
29 
32 
33 #include "../../GraphicsEngine/interface/Shader.h"
34 #include "../../../Primitives/interface/DataBlob.h"
35 
37 
38 // {1FDE020A-9C73-4A76-8AEF-C2C6C2CF0EA5}
39 static const INTERFACE_ID IID_HLSL2GLSLConversionStream =
40  {0x1fde020a, 0x9c73, 0x4a76, {0x8a, 0xef, 0xc2, 0xc6, 0xc2, 0xcf, 0xe, 0xa5}};
41 
42 
43 #define DILIGENT_INTERFACE_NAME IHLSL2GLSLConversionStream
44 #include "../../../Primitives/interface/DefineInterfaceHelperMacros.h"
45 
46 #define IHLSL2GLSLConversionStreamInclusiveMethods \
47  IObjectInclusiveMethods; \
48  IHLSL2GLSLConversionStreamMethods HLSL2GLSLConversionStream
49 
50 // clang-format off
51 
53 {
54  VIRTUAL void METHOD(Convert)(THIS_
55  const Char* EntryPoint,
57  bool IncludeDefintions,
58  const char* SamplerSuffix,
59  bool UseInOutLocationQualifiers,
60  IDataBlob** ppGLSLSource) PURE;
61 };
63 
64 #include "../../../Primitives/interface/UndefInterfaceHelperMacros.h"
65 
66 #if DILIGENT_C_INTERFACE
67 
68 // clang-format off
69 
70 # define IHLSL2GLSLConversionStream_Convert(This, ...) CALL_IFACE_METHOD(HLSL2GLSLConversionStream, Convert, This, __VA_ARGS__)
71 
72 // clang-format on
73 
74 #endif
75 
76 
77 // {44A21160-77E0-4DDC-A57E-B8B8B65B5342}
78 static const INTERFACE_ID IID_HLSL2GLSLConverter =
79  {0x44a21160, 0x77e0, 0x4ddc, {0xa5, 0x7e, 0xb8, 0xb8, 0xb6, 0x5b, 0x53, 0x42}};
80 
81 #define DILIGENT_INTERFACE_NAME IHLSL2GLSLConverter
82 #include "../../../Primitives/interface/DefineInterfaceHelperMacros.h"
83 
84 #define IHLSL2GLSLConverterInclusiveMethods \
85  IObjectInclusiveMethods; \
86  IHLSL2GLSLConverterMethods HLSL2GLSLConverter
87 
88 // clang-format off
89 
92 {
93  VIRTUAL void METHOD(CreateStream)(THIS_
94  const Char* InputFileName,
95  IShaderSourceInputStreamFactory* pSourceStreamFactory,
96  const Char* HLSLSource,
97  size_t NumSymbols,
99 };
101 
102 #include "../../../Primitives/interface/UndefInterfaceHelperMacros.h"
103 
104 #if DILIGENT_C_INTERFACE
105 
106 // clang-format off
107 
108 # define IHLSL2GLSLConverter_CreateStream(This, ...) CALL_IFACE_METHOD(HLSL2GLSLConverter, CreateStream, This, __VA_ARGS__)
109 
110 // clang-format on
111 
112 #endif
113 
114 DILIGENT_END_NAMESPACE // namespace Diligent
Diligent::IShaderSourceInputStreamFactory
Shader source stream factory interface.
Definition: Shader.h:134
DILIGENT_END_INTERFACE
#define DILIGENT_END_INTERFACE
Definition: DefineInterfaceHelperMacros.h:88
Diligent::INTERFACE_ID
struct INTERFACE_ID INTERFACE_ID
Definition: InterfaceID.h:54
VIRTUAL
#define VIRTUAL
Definition: DefineInterfaceHelperMacros.h:83
Diligent::Char
char Char
Definition: BasicTypes.h:64
Diligent::IDataBlob
Base interface for a file stream.
Definition: DataBlob.h:52
Diligent::SHADER_TYPE
SHADER_TYPE
Describes the shader type.
Definition: GraphicsTypes.h:65
DILIGENT_BEGIN_INTERFACE
#define DILIGENT_BEGIN_INTERFACE(Name, Base)
Definition: CommonDefinitions.h:97
Diligent::IObject
Base interface for all dynamic objects in the engine.
Definition: Object.h:41
Diligent::IHLSL2GLSLConversionStream
Definition: HLSL2GLSLConverter.h:52
Diligent::INTERFACE_ID
Unique interface identifier.
Definition: InterfaceID.h:37
PURE
#define PURE
Definition: DefineInterfaceHelperMacros.h:85
DILIGENT_END_NAMESPACE
#define DILIGENT_END_NAMESPACE
Definition: CommonDefinitions.h:86
CONST
#define CONST
Definition: DefineInterfaceHelperMacros.h:84
METHOD
#define METHOD(Name)
Definition: DefineInterfaceHelperMacros.h:87
DILIGENT_BEGIN_NAMESPACE
#define DILIGENT_BEGIN_NAMESPACE(Name)
Definition: CommonDefinitions.h:82
ShaderType
Uint16 ShaderType
Definition: DXBCUtils.cpp:70
Diligent::IHLSL2GLSLConverter
Interface to the buffer object implemented in OpenGL.
Definition: HLSL2GLSLConverter.h:91
Diligent
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37
THIS_
#define THIS_
Definition: DefineInterfaceHelperMacros.h:82