35 lines
1.1 KiB
Plaintext
35 lines
1.1 KiB
Plaintext
(program
|
|
(properties p
|
|
[(:= color float4)
|
|
(:= rect_position float2)
|
|
(:= rect_scale float2)
|
|
(:= resolution float2)
|
|
(:= texture Texture2D)
|
|
(:= sampler Sampler)])
|
|
|
|
(struct PS_Input
|
|
[(:= uv float2 (@uv))
|
|
(:= pos float4 (@pos))])
|
|
|
|
(fun vertex vs_main -> PS_Input
|
|
[(:= pos float4 (@position))]
|
|
(:= res float2 p.resolution)
|
|
(:= scale float2 p.rect_scale)
|
|
(:= rect_pos float2 p.rect_position)
|
|
(:= center float2 rect_pos)
|
|
(:= half_size float2 (float2 (/ scale.x 2) (/ scale.y 2)))
|
|
(:= dst_pos float4 (float4 (+ (* pos.x half_size.x) center.x) (+ (* pos.y half_size.y) center.y) 0 1))
|
|
(:= result PS_Input)
|
|
(:= src_p0 float2 (float2 0 1))
|
|
(:= src_p1 float2 (float2 1 0))
|
|
(:= src_half_size float2 (/ (- src_p1 src_p0) 2))
|
|
(:= src_center float2 (/ (+ src_p1 src_p0) 2))
|
|
(:= src_pos float2 (+ (* (float2 pos.x pos.y) src_half_size) src_center))
|
|
(= result.uv (float2 1 1))
|
|
(= result.pos (float4 (- (/ (* 2 dst_pos.x) res.x) 1) (- (/ (* 2 dst_pos.y) res.y) 1) 0 1))
|
|
(return result))
|
|
|
|
(fun pixel ps_main -> float4 (@target0)
|
|
[(:= input PS_Input)]
|
|
(:= color float4 p.color)
|
|
(return color))) |