用于将纹理投影到任意四边形的像素着色器

Tra*_*ife 5 directx wpf hlsl pixel-shader

只需要找出一种方法,使用Pixel Shader将纹理投影到任意用户定义的四边形.

将接受四边形四边的坐标:

/// <defaultValue>0,0</defaultValue>
float2 TopLeft : register(c0);

/// <defaultValue>1,0</defaultValue>
float2 TopRight : register(c1);

/// <defaultValue>0,1</defaultValue>
float2 BottomLeft : register(c2);

/// <defaultValue>1,1</defaultValue>
float2 BottomRight : register(c3);
Run Code Online (Sandbox Code Playgroud)

尝试了几种插值算法,但无法设法使其正确.

你们认为我有什么样的样本可以修改以获得理想的结果吗?

tim*_*day 1

这里有一篇很好的论文描述了您的选择(或这个.ppt)。基本上,您需要在四边形上定义一些重心坐标,然后将片段值插入为给定顶点值的 BC 加权和。

抱歉,不知道任何代码;现代面向三角形的硬件缺乏对四边形的直接支持(参见 voidstar69 的答案)意味着它们已经过时了。