YSTest: YSLib::Drawing::Shaders 命名空间参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | 函数
YSLib::Drawing::Shaders 命名空间参考

着色器命名空间。 更多...

## 类

struct | BlitAlphaPoint
| 像素计算：Alpha 混合。 更多...
struct | BlitTransparentPoint
| 像素迭代器透明操作。 更多...
struct | GBlender
| 分发像素混合操作。 更多...
struct | GBlender< _tPixel, EnableForMask< _tPixel, XYZATraits< 5, 5, 5, 1 > > >
struct | GBlender< _tPixel, ystdex::when< _bCond > >
struct | GPixelCompositor
| 像素组合器。 更多...
struct | GPixelCompositor< 0, 0 >
struct | GPixelCompositor< 0, 1 >
struct | GPixelCompositor< 0, _vSrcAlphaBits >
struct | GPixelCompositor< 1, 0 >
struct | GPixelCompositor< 1, 1 >
struct | GPixelCompositor< 1, _vSrcAlphaBits >
struct | GPixelCompositor< _vDstAlphaBits, 0 >
struct | GPixelCompositor< _vDstAlphaBits, 1 >

## 函数

template<size_t _vSrcAlphaBits, typename _tDstInt , typename _tSrcInt , typename _tSrcAlphaInt >
YB_ATTR_nodiscard YB_STATELESS yconstfn _tDstInt | BlendComponent (_tDstInt d, _tSrcInt s, _tSrcAlphaInt sa)
| 像素分量混合。 更多...
template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tDstInt , typename _tSrcInt , typename _tSrcAlphaInt , typename _tAlphaInt >
YB_ATTR_nodiscard YB_STATELESS yconstfn _tDstInt | CompositeComponent (_tDstInt d, _tSrcInt s, _tSrcAlphaInt sa, _tAlphaInt a)
| 像素分量组合。 更多...
template<size_t _vAlphaBits>
YB_ATTR_nodiscard YB_STATELESS std::uint16_t | BlendCore (std::uint32_t d, std::uint32_t s, std::uint8_t a)
| AXYZ1555 格式 Pixel 的 Alpha 混合。 更多...
template<size_t _vSrcAlphaBits, typename _tPixel , typename _tSrcAlphaInt >
YB_ATTR_nodiscard YB_PURE yconstfn _tPixel | Blend (const _tPixel &d, const _tPixel &s, _tSrcAlphaInt sa)
| 像素混合：使用指定的源 Alpha 。 更多...
template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tPixel , typename _tSrcAlphaInt >
YB_ATTR_nodiscard YB_PURE yconstfn _tPixel | BlendAlpha (const _tPixel &d, const _tPixel &s, _tSrcAlphaInt sa)
| Alpha 像素混合：使用指定的源 Alpha 同时组合透明背景 Alpha 。 更多...
template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tPixel , typename _tSrcAlphaInt , typename _tAlphaInt >
YB_ATTR_nodiscard YB_PURE yconstfn _tPixel | Composite (const _tPixel &d, const _tPixel &s, _tSrcAlphaInt sa, _tAlphaInt a)
| 像素组合：使用指定的源 Alpha 和结果 Alpha 。 更多...
template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tPixel , typename _tAlphaInt >
YB_ATTR_nodiscard YB_PURE yconstfn _tPixel | Composite (const _tPixel &d, const _tPixel &s, _tAlphaInt a)
| 像素组合：使用指定的结果 Alpha 。 更多...
template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tPixel >
YB_ATTR_nodiscard YB_PURE yconstfn _tPixel | Composite (const _tPixel &d, const _tPixel &s)
| 像素组合。 更多...

## 详细描述

着色器命名空间。

自从
  build 442

## 函数说明

## ◆ Blend()

template<size_t _vSrcAlphaBits, typename _tPixel , typename _tSrcAlphaInt >

YB_ATTR_nodiscard YB_PURE yconstfn _tPixel YSLib::Drawing::Shaders::Blend | ( | const _tPixel & | d,
|  | const _tPixel & | s,
|  | _tSrcAlphaInt | sa
| ) |  |

像素混合：使用指定的源 Alpha 。

注解
  输出背景不透明， Alpha 饱和。

参见
  GBlender::Blend

在文件 YPixel.h 第 701 行定义.

引用了 CHRLib::d , 以及 CHRLib::s.

## ◆ BlendAlpha()

template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tPixel , typename _tSrcAlphaInt >

YB_ATTR_nodiscard YB_PURE yconstfn _tPixel YSLib::Drawing::Shaders::BlendAlpha | ( | const _tPixel & | d,
|  | const _tPixel & | s,
|  | _tSrcAlphaInt | sa
| ) |  |

Alpha 像素混合：使用指定的源 Alpha 同时组合透明背景 Alpha 。

参见
  Drawing::GPixelCompositor

注解
  忽略源像素中的 Alpha 。

参见
  GBlender::BlendAlpha

自从
  build 561

在文件 YPixel.h 第 718 行定义.

引用了 CHRLib::d , 以及 CHRLib::s.

被这些函数引用 YSLib::Drawing::Shaders::BlitAlphaPoint::operator()().

这是这个函数的调用关系图:

## ◆ BlendComponent()

template<size_t _vSrcAlphaBits, typename _tDstInt , typename _tSrcInt , typename _tSrcAlphaInt >

YB_ATTR_nodiscard YB_STATELESS yconstfn _tDstInt YSLib::Drawing::Shaders::BlendComponent | ( | _tDstInt | d,
|  | _tSrcInt | s,
|  | _tSrcAlphaInt | sa
| ) |  |

像素分量混合。

参见
  GPixelCompositor

自从
  build 442

待办事项:
  支持浮点数。

在文件 YPixel.h 第 465 行定义.

引用了 CHRLib::d, YSLib::Drawing::get() , 以及 CHRLib::s.

函数调用图:

## ◆ BlendCore()

template<size_t _vAlphaBits>

YB_ATTR_nodiscard YB_STATELESS std::uint16_t YSLib::Drawing::Shaders::BlendCore | ( | std::uint32_t | d,
|  | std::uint32_t | s,
|  | std::uint8_t | a
| ) |  |

AXYZ1555 格式 Pixel 的 Alpha 混合。

模板参数

  _vAlphaBits | 表示 Alpha 值的有效整数位数。

自从
  build 442

设 MaxAlpha := (1 << _vAlphaBits) - 1 ， 使用下列公式进行像素的 Alpha 混合（其中 alpha = a / MaxAlpha）： 输出分量： component := (1 - alpha) * d + alpha * s = ((MaxAlpha - a) * d + a * s) >> _vAlphaBits = d + ((a * (s - d)) >> _vAlphaBits) 。 背景透明：不设置 Alpha 。 像素格式： 16 位 AXYZ1555 。 以 ARGB1555 为例，算法实现示意： arrrrrgggggbbbbb 0000000000arrrrr gggggbbbbb000000 0000000000011111 0000000000011111 00000000000rrrrr 00000000000bbbbb : dbr 0000000000000000 000000ggggg00000 : dg 分解分量至 32 位寄存器以减少总指令数。

在文件 YPixel.h 第 534 行定义.

引用了 YSLib::a, CHRLib::d, CHRLib::s , 以及 yunseq.

## ◆ Composite() [1/3]

template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tPixel >

YB_ATTR_nodiscard YB_PURE yconstfn _tPixel YSLib::Drawing::Shaders::Composite | ( | const _tPixel & | d,
|  | const _tPixel & | s
| ) |  |

像素组合。

在文件 YPixel.h 第 749 行定义.

引用了 CHRLib::d, YSLib::Drawing::get() , 以及 CHRLib::s.

函数调用图:

## ◆ Composite() [2/3]

template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tPixel , typename _tAlphaInt >

YB_ATTR_nodiscard YB_PURE yconstfn _tPixel YSLib::Drawing::Shaders::Composite | ( | const _tPixel & | d,
|  | const _tPixel & | s,
|  | _tAlphaInt | a
| ) |  |

像素组合：使用指定的结果 Alpha 。

注解
  使用 ADL Composite 代理组合像素调用。

在文件 YPixel.h 第 742 行定义.

引用了 YSLib::a, CHRLib::d , 以及 CHRLib::s.

## ◆ Composite() [3/3]

template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tPixel , typename _tSrcAlphaInt , typename _tAlphaInt >

YB_ATTR_nodiscard YB_PURE yconstfn _tPixel YSLib::Drawing::Shaders::Composite | ( | const _tPixel & | d,
|  | const _tPixel & | s,
|  | _tSrcAlphaInt | sa,
|  | _tAlphaInt | a
| ) |  |

像素组合：使用指定的源 Alpha 和结果 Alpha 。

参见
  GBlender::Composite

在文件 YPixel.h 第 731 行定义.

引用了 YSLib::a, CHRLib::d , 以及 CHRLib::s.

被这些函数引用 YSLib::Drawing::Shaders::BlitAlphaPoint::operator()().

这是这个函数的调用关系图:

## ◆ CompositeComponent()

template<size_t _vDstAlphaBits, size_t _vSrcAlphaBits, typename _tDstInt , typename _tSrcInt , typename _tSrcAlphaInt , typename _tAlphaInt >

YB_ATTR_nodiscard YB_STATELESS yconstfn _tDstInt YSLib::Drawing::Shaders::CompositeComponent | ( | _tDstInt | d,
|  | _tSrcInt | s,
|  | _tSrcAlphaInt | sa,
|  | _tAlphaInt | a
| ) |  |

像素分量组合。

参见
  GPixelCompositor

自从
  build 442

待办事项:
  支持浮点数。

在文件 YPixel.h 第 491 行定义.

引用了 YSLib::a, CHRLib::d, YSLib::Drawing::get() , 以及 CHRLib::s.

被这些函数引用 YSLib::Drawing::Shaders::GBlender< _tPixel, ystdex::when< _bCond > >::Composite().

函数调用图:
这是这个函数的调用关系图: