Add Chromium-only Blender WebEngine parity work
This commit is contained in:
34
blender-5.2.0/intern/meshoptimizer_bridge/CMakeLists.txt
Normal file
34
blender-5.2.0/intern/meshoptimizer_bridge/CMakeLists.txt
Normal file
@@ -0,0 +1,34 @@
|
||||
# SPDX-FileCopyrightText: 2026 Blender Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(SRC
|
||||
intern/common.cpp
|
||||
intern/encoder.cpp
|
||||
intern/decoder.cpp
|
||||
|
||||
intern/common.h
|
||||
intern/encoder.h
|
||||
intern/decoder.h
|
||||
)
|
||||
|
||||
set(LIB
|
||||
PRIVATE bf::dependencies::optional::meshoptimizer
|
||||
)
|
||||
|
||||
# Equivalent `blender_add_lib`,
|
||||
# unrolled and stripped down to be able to set the library type to `SHARED`.
|
||||
add_library(bf_intern_meshopt_bridge SHARED "${SRC}")
|
||||
blender_link_libraries(bf_intern_meshopt_bridge "${LIB}")
|
||||
blender_source_group(bf_intern_meshopt_bridge "${SRC}")
|
||||
|
||||
if(APPLE)
|
||||
# On macOS, prevent the `meshopt` library (already present in the application bundle)
|
||||
# from being wrongly copied into the Xcode archive used for application distribution,
|
||||
# which pollutes the archive and prevents it from being properly recognized.
|
||||
# This effectively corrects a bad implicit CMake behavior for `SHARED` library targets on Xcode.
|
||||
set_target_properties(bf_intern_meshopt_bridge PROPERTIES
|
||||
XCODE_ATTRIBUTE_SKIP_INSTALL "YES"
|
||||
XCODE_ATTRIBUTE_INSTALL_PATH ""
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,7 @@
|
||||
/* SPDX-FileCopyrightText: 2026 Blender Authors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <meshoptimizer.h>
|
||||
11
blender-5.2.0/intern/meshoptimizer_bridge/intern/common.h
Normal file
11
blender-5.2.0/intern/meshoptimizer_bridge/intern/common.h
Normal file
@@ -0,0 +1,11 @@
|
||||
/* SPDX-FileCopyrightText: 2026 Blender Authors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
# define API(returnType) extern "C" __declspec(dllexport) returnType __cdecl
|
||||
#else
|
||||
# define API(returnType) extern "C" returnType
|
||||
#endif
|
||||
49
blender-5.2.0/intern/meshoptimizer_bridge/intern/decoder.cpp
Normal file
49
blender-5.2.0/intern/meshoptimizer_bridge/intern/decoder.cpp
Normal file
@@ -0,0 +1,49 @@
|
||||
/* SPDX-FileCopyrightText: 2026 Blender Authors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "decoder.h"
|
||||
|
||||
#include <meshoptimizer.h>
|
||||
|
||||
int decodeVertexBuffer(void *destination,
|
||||
size_t vertex_count,
|
||||
size_t vertex_size,
|
||||
const unsigned char *buffer,
|
||||
size_t buffer_size)
|
||||
{
|
||||
return meshopt_decodeVertexBuffer(destination, vertex_count, vertex_size, buffer, buffer_size);
|
||||
}
|
||||
|
||||
int decodeIndexBuffer(void *destination,
|
||||
size_t index_count,
|
||||
size_t index_size,
|
||||
const unsigned char *buffer,
|
||||
size_t buffer_size)
|
||||
{
|
||||
return meshopt_decodeIndexBuffer(destination, index_count, index_size, buffer, buffer_size);
|
||||
}
|
||||
|
||||
int decodeIndexSequence(void *destination,
|
||||
size_t index_count,
|
||||
size_t index_size,
|
||||
const unsigned char *buffer,
|
||||
size_t buffer_size)
|
||||
{
|
||||
return meshopt_decodeIndexSequence(destination, index_count, index_size, buffer, buffer_size);
|
||||
}
|
||||
|
||||
void decodeFilterOct(void *buffer, size_t count, size_t stride)
|
||||
{
|
||||
meshopt_decodeFilterOct(buffer, count, stride);
|
||||
}
|
||||
|
||||
void decodeFilterQuat(void *buffer, size_t count, size_t stride)
|
||||
{
|
||||
meshopt_decodeFilterQuat(buffer, count, stride);
|
||||
}
|
||||
|
||||
void decodeFilterExp(void *buffer, size_t count, size_t stride)
|
||||
{
|
||||
meshopt_decodeFilterExp(buffer, count, stride);
|
||||
}
|
||||
39
blender-5.2.0/intern/meshoptimizer_bridge/intern/decoder.h
Normal file
39
blender-5.2.0/intern/meshoptimizer_bridge/intern/decoder.h
Normal file
@@ -0,0 +1,39 @@
|
||||
/* SPDX-FileCopyrightText: 2026 Blender Authors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
API(int)
|
||||
decodeVertexBuffer(void *destination,
|
||||
size_t vertex_count,
|
||||
size_t vertex_size,
|
||||
const unsigned char *buffer,
|
||||
size_t buffer_size);
|
||||
|
||||
API(int)
|
||||
decodeIndexBuffer(void *destination,
|
||||
size_t index_count,
|
||||
size_t index_size,
|
||||
const unsigned char *buffer,
|
||||
size_t buffer_size);
|
||||
|
||||
API(int)
|
||||
decodeIndexSequence(void *destination,
|
||||
size_t index_count,
|
||||
size_t index_size,
|
||||
const unsigned char *buffer,
|
||||
size_t buffer_size);
|
||||
|
||||
API(void)
|
||||
decodeFilterOct(void *buffer, size_t count, size_t stride);
|
||||
|
||||
API(void)
|
||||
decodeFilterQuat(void *buffer, size_t count, size_t stride);
|
||||
|
||||
API(void)
|
||||
decodeFilterExp(void *buffer, size_t count, size_t stride);
|
||||
78
blender-5.2.0/intern/meshoptimizer_bridge/intern/encoder.cpp
Normal file
78
blender-5.2.0/intern/meshoptimizer_bridge/intern/encoder.cpp
Normal file
@@ -0,0 +1,78 @@
|
||||
/* SPDX-FileCopyrightText: 2026 Blender Authors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "encoder.h"
|
||||
|
||||
#include <meshoptimizer.h>
|
||||
|
||||
void encodeIndexVersion(int version)
|
||||
{
|
||||
meshopt_encodeIndexVersion(version);
|
||||
}
|
||||
|
||||
void encodeVertexVersion(int version)
|
||||
{
|
||||
meshopt_encodeVertexVersion(version);
|
||||
}
|
||||
|
||||
size_t encodeIndexBufferBound(size_t index_count, size_t vertex_count)
|
||||
{
|
||||
return meshopt_encodeIndexBufferBound(index_count, vertex_count);
|
||||
}
|
||||
|
||||
size_t encodeIndexBuffer(unsigned char *buffer,
|
||||
size_t buffer_size,
|
||||
const unsigned int *indices,
|
||||
size_t index_count)
|
||||
{
|
||||
return meshopt_encodeIndexBuffer(buffer, buffer_size, indices, index_count);
|
||||
}
|
||||
|
||||
size_t encodeVertexBufferBound(size_t vertex_count, size_t vertex_size)
|
||||
{
|
||||
return meshopt_encodeVertexBufferBound(vertex_count, vertex_size);
|
||||
}
|
||||
|
||||
size_t encodeVertexBuffer(unsigned char *buffer,
|
||||
size_t buffer_size,
|
||||
const void *vertices,
|
||||
size_t vertex_count,
|
||||
size_t vertex_size)
|
||||
{
|
||||
return meshopt_encodeVertexBuffer(buffer, buffer_size, vertices, vertex_count, vertex_size);
|
||||
}
|
||||
|
||||
size_t encodeIndexSequenceBound(size_t index_count, size_t vertex_count)
|
||||
{
|
||||
return meshopt_encodeIndexSequenceBound(index_count, vertex_count);
|
||||
}
|
||||
|
||||
size_t encodeIndexSequence(unsigned char *buffer,
|
||||
size_t buffer_size,
|
||||
const unsigned int *indices,
|
||||
size_t index_count)
|
||||
{
|
||||
return meshopt_encodeIndexSequence(buffer, buffer_size, indices, index_count);
|
||||
}
|
||||
|
||||
void encodeFilterOct(void *destination, size_t count, size_t stride, int bits, const float *data)
|
||||
{
|
||||
meshopt_encodeFilterOct(destination, count, stride, bits, data);
|
||||
}
|
||||
|
||||
void encodeFilterQuat(void *destination, size_t count, size_t stride, int bits, const float *data)
|
||||
{
|
||||
meshopt_encodeFilterQuat(destination, count, stride, bits, data);
|
||||
}
|
||||
|
||||
void encodeFilterExp(void *destination,
|
||||
size_t count,
|
||||
size_t stride,
|
||||
int bits,
|
||||
const float *data,
|
||||
enum encodeExpMode mode)
|
||||
{
|
||||
meshopt_encodeFilterExp(
|
||||
destination, count, stride, bits, data, (enum meshopt_EncodeExpMode)mode);
|
||||
}
|
||||
77
blender-5.2.0/intern/meshoptimizer_bridge/intern/encoder.h
Normal file
77
blender-5.2.0/intern/meshoptimizer_bridge/intern/encoder.h
Normal file
@@ -0,0 +1,77 @@
|
||||
/* SPDX-FileCopyrightText: 2026 Blender Authors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
enum encodeExpMode {
|
||||
/** When encoding exponents, use separate values for each component (maximum quality) */
|
||||
EncodeExpSeparate,
|
||||
/**
|
||||
* When encoding exponents, use shared value for all components of each vector
|
||||
* (better compression).
|
||||
*/
|
||||
EncodeExpSharedVector,
|
||||
/**
|
||||
* When encoding exponents, use shared value for each component of all vectors
|
||||
* (best compression).
|
||||
*/
|
||||
EncodeExpSharedComponent,
|
||||
/**
|
||||
* When encoding exponents, use separate values for each component, but clamp to 0 (good quality
|
||||
* if very small values are not important).
|
||||
*/
|
||||
EncodeExpClamped,
|
||||
};
|
||||
|
||||
API(void)
|
||||
encodeIndexVersion(int version);
|
||||
|
||||
API(void)
|
||||
encodeVertexVersion(int version);
|
||||
|
||||
API(size_t)
|
||||
encodeIndexBufferBound(size_t index_count, size_t vertex_count);
|
||||
|
||||
API(size_t)
|
||||
encodeIndexBuffer(unsigned char *buffer,
|
||||
size_t buffer_size,
|
||||
const unsigned int *indices,
|
||||
size_t index_count);
|
||||
|
||||
API(size_t)
|
||||
encodeVertexBufferBound(size_t vertex_count, size_t vertex_size);
|
||||
|
||||
API(size_t)
|
||||
encodeVertexBuffer(unsigned char *buffer,
|
||||
size_t buffer_size,
|
||||
const void *vertices,
|
||||
size_t vertex_count,
|
||||
size_t vertex_size);
|
||||
|
||||
API(size_t)
|
||||
encodeIndexSequenceBound(size_t index_count, size_t vertex_count);
|
||||
|
||||
API(size_t)
|
||||
encodeIndexSequence(unsigned char *buffer,
|
||||
size_t buffer_size,
|
||||
const unsigned int *indices,
|
||||
size_t index_count);
|
||||
|
||||
API(void)
|
||||
encodeFilterOct(void *destination, size_t count, size_t stride, int bits, const float *data);
|
||||
|
||||
API(void)
|
||||
encodeFilterQuat(void *destination, size_t count, size_t stride, int bits, const float *data);
|
||||
|
||||
API(void)
|
||||
encodeFilterExp(void *destination,
|
||||
size_t count,
|
||||
size_t stride,
|
||||
int bits,
|
||||
const float *data,
|
||||
enum encodeExpMode mode);
|
||||
Reference in New Issue
Block a user