CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
HLSLIntrinsics.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2022 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
11
13
15
19
21
28
30
31 // IntrinsicAdept interface implementation for HLSL frontend.
33 public:
35
37 const TypeDenoterPtr& prefixTypeDenoter = nullptr) const override;
38
40
42
43 // Returns the intrinsics map (Intrinsic name -> Intrinsic ID and minimum HLSL shader model).
45
46 private:
56
58 bool useMinDimension = false) const;
59
63
65 };
66
67} // namespace CeresEngine::ShaderCompiler
Definition HLSLIntrinsics.hpp:32
TypeDenoterPtr deriveReturnTypeVectorCompare(const Vector< ExpressionPtr > &args) const
TypeDenoterPtr deriveReturnTypeMulPrimary(const Vector< ExpressionPtr > &args, const TypeDenoterPtr &type0, const TypeDenoterPtr &type1) const
void deriveParameterTypesFirstBit(Vector< TypeDenoterPtr > &paramTypeDenoters, const Vector< ExpressionPtr > &args, const Intrinsic intrinsic) const
void deriveParameterTypes(Vector< TypeDenoterPtr > &paramTypeDenoters, const Intrinsic intrinsic, const Vector< ExpressionPtr > &args, bool useMinDimension=false) const
void deriveParameterTypesMul(Vector< TypeDenoterPtr > &paramTypeDenoters, const Vector< ExpressionPtr > &args) const
TypeDenoterPtr deriveReturnTypeTextureGather(const BaseTypeDenoterPtr &genericTypeDenoter) const
TypeDenoterPtr deriveReturnTypeTranspose(const Vector< ExpressionPtr > &args) const
TypeDenoterPtr deriveReturnTypeMul(const Vector< ExpressionPtr > &args) const
BaseTypeDenoterPtr getGenericTextureTypeFromPrefix(const Intrinsic intrinsic, const TypeDenoterPtr &prefixTypeDenoter) const
Vector< TypeDenoterPtr > getIntrinsicParameterTypes(const Intrinsic intrinsic, const Vector< ExpressionPtr > &args) const override
static const HLSLIntrinsicsMap & getIntrinsicMap()
TypeDenoterPtr deriveReturnTypeTextureSampleCmp(const BaseTypeDenoterPtr &genericTypeDenoter) const
void deriveParameterTypesTranspose(Vector< TypeDenoterPtr > &paramTypeDenoters, const Vector< ExpressionPtr > &args) const
TypeDenoterPtr getIntrinsicReturnType(const Intrinsic intrinsic, const Vector< ExpressionPtr > &args, const TypeDenoterPtr &prefixTypeDenoter=nullptr) const override
TypeDenoterPtr deriveReturnType(const Intrinsic intrinsic, const Vector< ExpressionPtr > &args) const
Vector< std::size_t > getIntrinsicOutputParameterIndices(const Intrinsic intrinsic) const override
TypeDenoterPtr deriveReturnTypeTextureGatherCmp(const BaseTypeDenoterPtr &genericTypeDenoter) const
TypeDenoterPtr deriveReturnTypeTextureSample(const BaseTypeDenoterPtr &genericTypeDenoter) const
Definition IntrinsicAdept.hpp:26
Definition ShaderVersion.hpp:17
Definition AST.hpp:33
SPtr< BaseTypeDenoter > BaseTypeDenoterPtr
Definition TypeDenoter.hpp:32
Intrinsic
Intrinsics function enumeration (currently only HLSL intrinsics).
Definition ASTEnums.hpp:980
SPtr< TypeDenoter > TypeDenoterPtr
Definition TypeDenoter.hpp:29
Map< String, HLSLIntrinsicEntry > HLSLIntrinsicsMap
Definition HLSLIntrinsics.hpp:29
std::vector< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > Vector
Vector is a sequence container that encapsulates dynamic size arrays.
Definition Vector.hpp:17
std::int32_t Int32
Definition DataTypes.hpp:21
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
std::map< Key, T, Compare, ScopedAllocatorAdaptor< StdAllocator< Pair< const Key, T >, RawAllocator > > > Map
Map is a sorted associative container that contains key-value pairs with unique keys.
Definition Map.hpp:24
Definition HLSLIntrinsics.hpp:22
ShaderVersion minShaderModel
Definition HLSLIntrinsics.hpp:26
Intrinsic intrinsic
Definition HLSLIntrinsics.hpp:25
HLSLIntrinsicEntry(const Intrinsic intrinsic, const Int32 major, const Int32 minor)
Definition HLSLIntrinsics.hpp:23