This repository has been archived by the owner on Aug 5, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
sampler_structs.go
131 lines (112 loc) · 4.83 KB
/
sampler_structs.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package core1_0
/*
#include <stdlib.h>
#include "vulkan/vulkan.h"
*/
import "C"
import (
"github.com/CannibalVox/VKng/core/common"
"github.com/CannibalVox/cgoparam"
"unsafe"
)
const (
BorderColorFloatTransparentBlack BorderColor = C.VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK
BorderColorIntTransparentBlack BorderColor = C.VK_BORDER_COLOR_INT_TRANSPARENT_BLACK
BorderColorFloatOpaqueBlack BorderColor = C.VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK
BorderColorIntOpaqueBlack BorderColor = C.VK_BORDER_COLOR_INT_OPAQUE_BLACK
BorderColorFloatOpaqueWhite BorderColor = C.VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE
BorderColorIntOpaqueWhite BorderColor = C.VK_BORDER_COLOR_INT_OPAQUE_WHITE
CompareOpNever CompareOp = C.VK_COMPARE_OP_NEVER
CompareOpLess CompareOp = C.VK_COMPARE_OP_LESS
CompareOpEqual CompareOp = C.VK_COMPARE_OP_EQUAL
CompareOpLessOrEqual CompareOp = C.VK_COMPARE_OP_LESS_OR_EQUAL
CompareOpGreater CompareOp = C.VK_COMPARE_OP_GREATER
CompareOpNotEqual CompareOp = C.VK_COMPARE_OP_NOT_EQUAL
CompareOpGreaterOrEqual CompareOp = C.VK_COMPARE_OP_GREATER_OR_EQUAL
CompareOpAlways CompareOp = C.VK_COMPARE_OP_ALWAYS
FilterNearest Filter = C.VK_FILTER_NEAREST
FilterLinear Filter = C.VK_FILTER_LINEAR
SamplerMipmapModeNearest SamplerMipmapMode = C.VK_SAMPLER_MIPMAP_MODE_NEAREST
SamplerMipmapModeLinear SamplerMipmapMode = C.VK_SAMPLER_MIPMAP_MODE_LINEAR
SamplerAddressModeRepeat SamplerAddressMode = C.VK_SAMPLER_ADDRESS_MODE_REPEAT
SamplerAddressModeMirroredRepeat SamplerAddressMode = C.VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT
SamplerAddressModeClampToEdge SamplerAddressMode = C.VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
SamplerAddressModeClampToBorder SamplerAddressMode = C.VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
)
func init() {
BorderColorFloatTransparentBlack.Register("Transparent Black - Float")
BorderColorIntTransparentBlack.Register("Transparent Black - Int")
BorderColorFloatOpaqueBlack.Register("Opaque Black - Float")
BorderColorIntOpaqueBlack.Register("Opaque Black - Int")
BorderColorFloatOpaqueWhite.Register("Opaque White - Float")
BorderColorIntOpaqueWhite.Register("Opaque White - Int")
CompareOpNever.Register("Never")
CompareOpLess.Register("Less Than")
CompareOpEqual.Register("Equal")
CompareOpLessOrEqual.Register("Less Than Or Equal")
CompareOpGreater.Register("Greater Than")
CompareOpNotEqual.Register("Not Equal")
CompareOpGreaterOrEqual.Register("Greater Than Or Equal")
CompareOpAlways.Register("Always")
FilterNearest.Register("Nearest")
FilterLinear.Register("Linear")
SamplerMipmapModeNearest.Register("Nearest")
SamplerMipmapModeLinear.Register("Linear")
SamplerAddressModeRepeat.Register("Repeat")
SamplerAddressModeMirroredRepeat.Register("Mirrored Repeat")
SamplerAddressModeClampToEdge.Register("Clamp to Edge")
SamplerAddressModeClampToBorder.Register("Clamp to Border")
}
type SamplerCreateInfo struct {
Flags SamplerCreateFlags
MagFilter Filter
MinFilter Filter
MipmapMode SamplerMipmapMode
AddressModeU SamplerAddressMode
AddressModeV SamplerAddressMode
AddressModeW SamplerAddressMode
MipLodBias float32
MinLod float32
MaxLod float32
AnisotropyEnable bool
MaxAnisotropy float32
CompareEnable bool
CompareOp CompareOp
BorderColor BorderColor
UnnormalizedCoordinates bool
common.NextOptions
}
func (o SamplerCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error) {
if preallocatedPointer == unsafe.Pointer(nil) {
preallocatedPointer = allocator.Malloc(C.sizeof_struct_VkSamplerCreateInfo)
}
createInfo := (*C.VkSamplerCreateInfo)(preallocatedPointer)
createInfo.sType = C.VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
createInfo.pNext = next
createInfo.flags = C.VkSamplerCreateFlags(o.Flags)
createInfo.magFilter = C.VkFilter(o.MagFilter)
createInfo.minFilter = C.VkFilter(o.MinFilter)
createInfo.mipmapMode = C.VkSamplerMipmapMode(o.MipmapMode)
createInfo.addressModeU = C.VkSamplerAddressMode(o.AddressModeU)
createInfo.addressModeV = C.VkSamplerAddressMode(o.AddressModeV)
createInfo.addressModeW = C.VkSamplerAddressMode(o.AddressModeW)
createInfo.mipLodBias = C.float(o.MipLodBias)
createInfo.anisotropyEnable = C.VK_FALSE
if o.AnisotropyEnable {
createInfo.anisotropyEnable = C.VK_TRUE
}
createInfo.maxAnisotropy = C.float(o.MaxAnisotropy)
createInfo.compareEnable = C.VK_FALSE
if o.CompareEnable {
createInfo.compareEnable = C.VK_TRUE
}
createInfo.compareOp = C.VkCompareOp(o.CompareOp)
createInfo.minLod = C.float(o.MinLod)
createInfo.maxLod = C.float(o.MaxLod)
createInfo.borderColor = C.VkBorderColor(o.BorderColor)
createInfo.unnormalizedCoordinates = C.VK_FALSE
if o.UnnormalizedCoordinates {
createInfo.unnormalizedCoordinates = C.VK_TRUE
}
return preallocatedPointer, nil
}