Silicon
A realtime platform for creating interactive media.
Shader.hpp
Go to the documentation of this file.
1// BSD 2-Clause License
2//
3// Copyright (c) 2022, Matthew McCall
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are met:
8//
9// 1. Redistributions of source code must retain the above copyright notice, this
10// list of conditions and the following disclaimer.
11//
12// 2. Redistributions in binary form must reproduce the above copyright notice,
13// this list of conditions and the following disclaimer in the documentation
14// and/or other materials provided with the distribution.
15//
16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27//
28// Created by Matthew McCall on 11/21/22.
29//
30
31#ifndef SILICON_SHADER_HPP
32#define SILICON_SHADER_HPP
33
34#include <cstdint>
35#include <string>
36
37#include "Types.hpp"
38
39namespace Si {
40class Shader
41{
42public:
46 enum class Type {
47 Vertex,
48 TessellationControl, // Future support planned.
49 TessellationEvaluation, // Future support planned.
50 Geometry, // Future support planned.
51 Fragment,
52 Compute, // Future support planned.
53 RTRayGen, // Future support planned.
54 RTAnyHit, // Future support planned.
55 RTClosestHit, // Future support planned.
56 RTMiss, // Future support planned.
57 RTIntersection, // Future support planned.
58 RTCallable // Future support planned.
59 };
60
61 Shader(const std::string &, Type type)
62 : m_type(type)
63 {
64 }
65
67 : m_type(type)
68 {
69 }
70
71 Type getType() const
72 {
73 return m_type;
74 }
75
76 virtual ~Shader() = default;
77
78protected:
80};
81}
82
83#endif // SILICON_SHADER_HPP
virtual ~Shader()=default
Type m_type
Definition: Shader.hpp:79
Shader(const std::string &, Type type)
Definition: Shader.hpp:61
Type
Represents different types of shaders.
Definition: Shader.hpp:46
Type getType() const
Definition: Shader.hpp:71
Shader(const Vector< std::uint32_t > &, Type type)
Definition: Shader.hpp:66
Definition: Allocator.hpp:36