Skip to content

Commit 4220ef3

Browse files
bderodnfield
authored andcommitted
Add cull mode to command (#13)
1 parent dde655f commit 4220ef3

File tree

4 files changed

+21
-2
lines changed

4 files changed

+21
-2
lines changed

impeller/renderer/backend/metal/formats_mtl.h

+12
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,18 @@ constexpr MTLIndexType ToMTLIndexType(IndexType type) {
116116
}
117117
}
118118

119+
constexpr MTLCullMode ToMTLCullMode(CullMode mode) {
120+
switch (mode) {
121+
case CullMode::kNone:
122+
return MTLCullModeNone;
123+
case CullMode::kBackFace:
124+
return MTLCullModeBack;
125+
case CullMode::kFrontFace:
126+
return MTLCullModeFront;
127+
}
128+
return MTLCullModeNone;
129+
}
130+
119131
constexpr MTLBlendOperation ToMTLBlendOperation(BlendOperation type) {
120132
switch (type) {
121133
case BlendOperation::kAdd:

impeller/renderer/backend/metal/render_pass_mtl.mm

+1-1
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ static bool Bind(PassBindingsCache& pass,
426426
[encoder setFrontFacingWinding:command.winding == WindingOrder::kClockwise
427427
? MTLWindingClockwise
428428
: MTLWindingCounterClockwise];
429-
[encoder setCullMode:MTLCullModeNone];
429+
[encoder setCullMode:ToMTLCullMode(command.cull_mode)];
430430
[encoder setStencilReferenceValue:command.stencil_reference];
431431
if (command.viewport.has_value()) {
432432
auto v = command.viewport.value();

impeller/renderer/command.h

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ struct Command {
7070
std::string label;
7171
PrimitiveType primitive_type = PrimitiveType::kTriangle;
7272
WindingOrder winding = WindingOrder::kClockwise;
73+
CullMode cull_mode = CullMode::kNone;
7374
uint32_t stencil_reference = 0u;
7475
//----------------------------------------------------------------------------
7576
/// The viewport coordinates that the rasterizer linearly maps normalized

impeller/renderer/formats.h

+7-1
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111

1212
#include "flutter/fml/hash_combine.h"
1313
#include "flutter/fml/macros.h"
14+
#include "impeller/geometry/color.h"
1415
#include "impeller/geometry/rect.h"
1516
#include "impeller/geometry/scalar.h"
16-
#include "impeller/geometry/color.h"
1717

1818
namespace impeller {
1919

@@ -135,6 +135,12 @@ enum class WindingOrder {
135135
kCounterClockwise,
136136
};
137137

138+
enum class CullMode {
139+
kNone,
140+
kFrontFace,
141+
kBackFace,
142+
};
143+
138144
enum class IndexType {
139145
kUnknown,
140146
k16bit,

0 commit comments

Comments
 (0)