mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-24 10:48:53 +01:00
graphicsdriver/metal: Refactoring
This commit is contained in:
parent
caad187cd3
commit
2b89710600
@ -116,11 +116,12 @@ inline float2 AdjustTexelByAddress<ADDRESS_REPEAT>(float2 p, float4 source_regio
|
|||||||
template<uint8_t filter, uint8_t address>
|
template<uint8_t filter, uint8_t address>
|
||||||
struct ColorFromTexel;
|
struct ColorFromTexel;
|
||||||
|
|
||||||
|
constexpr sampler texture_sampler{filter::nearest};
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
struct ColorFromTexel<FILTER_NEAREST, ADDRESS_UNSAFE> {
|
struct ColorFromTexel<FILTER_NEAREST, ADDRESS_UNSAFE> {
|
||||||
inline float4 Do(VertexOut v, texture2d<float> texture, constant float2& source_size, float scale, constant float4& source_region) {
|
inline float4 Do(VertexOut v, texture2d<float> texture, constant float2& source_size, float scale, constant float4& source_region) {
|
||||||
float2 p = v.tex;
|
float2 p = v.tex;
|
||||||
constexpr sampler texture_sampler(filter::nearest);
|
|
||||||
return texture.sample(texture_sampler, p);
|
return texture.sample(texture_sampler, p);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -133,7 +134,6 @@ struct ColorFromTexel<FILTER_NEAREST, address> {
|
|||||||
source_region[1] <= p.y &&
|
source_region[1] <= p.y &&
|
||||||
p.x < source_region[2] &&
|
p.x < source_region[2] &&
|
||||||
p.y < source_region[3]) {
|
p.y < source_region[3]) {
|
||||||
constexpr sampler texture_sampler(filter::nearest);
|
|
||||||
return texture.sample(texture_sampler, p);
|
return texture.sample(texture_sampler, p);
|
||||||
}
|
}
|
||||||
return 0.0;
|
return 0.0;
|
||||||
@ -143,7 +143,6 @@ struct ColorFromTexel<FILTER_NEAREST, address> {
|
|||||||
template<>
|
template<>
|
||||||
struct ColorFromTexel<FILTER_LINEAR, ADDRESS_UNSAFE> {
|
struct ColorFromTexel<FILTER_LINEAR, ADDRESS_UNSAFE> {
|
||||||
inline float4 Do(VertexOut v, texture2d<float> texture, constant float2& source_size, float scale, constant float4& source_region) {
|
inline float4 Do(VertexOut v, texture2d<float> texture, constant float2& source_size, float scale, constant float4& source_region) {
|
||||||
constexpr sampler texture_sampler(filter::nearest);
|
|
||||||
const float2 texel_size = 1 / source_size;
|
const float2 texel_size = 1 / source_size;
|
||||||
|
|
||||||
// Shift 1/512 [texel] to avoid the tie-breaking issue.
|
// Shift 1/512 [texel] to avoid the tie-breaking issue.
|
||||||
@ -164,7 +163,6 @@ struct ColorFromTexel<FILTER_LINEAR, ADDRESS_UNSAFE> {
|
|||||||
template<uint8_t address>
|
template<uint8_t address>
|
||||||
struct ColorFromTexel<FILTER_LINEAR, address> {
|
struct ColorFromTexel<FILTER_LINEAR, address> {
|
||||||
inline float4 Do(VertexOut v, texture2d<float> texture, constant float2& source_size, float scale, constant float4& source_region) {
|
inline float4 Do(VertexOut v, texture2d<float> texture, constant float2& source_size, float scale, constant float4& source_region) {
|
||||||
constexpr sampler texture_sampler(filter::nearest);
|
|
||||||
const float2 texel_size = 1 / source_size;
|
const float2 texel_size = 1 / source_size;
|
||||||
|
|
||||||
// Shift 1/512 [texel] to avoid the tie-breaking issue.
|
// Shift 1/512 [texel] to avoid the tie-breaking issue.
|
||||||
@ -204,7 +202,6 @@ struct ColorFromTexel<FILTER_LINEAR, address> {
|
|||||||
template<uint8_t address>
|
template<uint8_t address>
|
||||||
struct ColorFromTexel<FILTER_SCREEN, address> {
|
struct ColorFromTexel<FILTER_SCREEN, address> {
|
||||||
inline float4 Do(VertexOut v, texture2d<float> texture, constant float2& source_size, float scale, constant float4& source_region) {
|
inline float4 Do(VertexOut v, texture2d<float> texture, constant float2& source_size, float scale, constant float4& source_region) {
|
||||||
constexpr sampler texture_sampler(filter::nearest);
|
|
||||||
const float2 texel_size = 1 / source_size;
|
const float2 texel_size = 1 / source_size;
|
||||||
|
|
||||||
float2 p0 = v.tex - texel_size / 2.0 / scale + (texel_size / 512.0);
|
float2 p0 = v.tex - texel_size / 2.0 / scale + (texel_size / 512.0);
|
||||||
|
Loading…
Reference in New Issue
Block a user