2013-03-05 6 views
1

Я хочу, чтобы пиксельный шейдер om AGAL вместо простого копирования цвета, переданного ему из вершинного шейдера, на выход, только копирует красный компонент из прошедшего цвета и устанавливает зеленых и синих компонентов до нуля. В псевдокоде:Запись только компонента красного цвета в пиксельный шейдерный выход AGAL

temp = 0 
temp.red = in.red 
temp.alpha = in.alpha 
out = temp 

Я не могу понять, как это записать в AGAL. Это не делается:

mov ft0.ra, v0.ra 
mov oc, ft0 

Как я могу получить результат, который я хочу?

+0

В каком результате вы получаете свой код как есть? – bwroga

+0

Тот же результат, как если бы я скопировал все компоненты v0 в oc. Я попробовал mov ft0.rgba, v0.rrra. Нет разницы. – user2010596

+0

Не могли бы вы разместить весь ваш шейдер? – bwroga

ответ

1

Вы должны помнить, что

  • с помощью «.something» на праве регистра назначения означает, что вы используете маски
  • с помощью «.something» на праве исходного регистра означает, что вы используете алкогольные напитки.

Предположив, что

  • к0 содержит в первом компоненте
  • v0 ноль содержит цвет, из которого вы хотите извлечь красный компонент

Так вот ваш пиксельный шейдер :

// shader. 
mov ft0, fc0.xxxx  // fill ft0 with zeros 
mov ft0.xw, v0.xxxw // fill ft0.x with v0.x and ft0.w with v0.w 
mov oc, ft0 

Источник: Я написал Minko ActionScript 3 для компилятора AGAL.