Показать сообщение отдельно
Старый 17.11.2014, 14:33
VisualDima вне форума Посмотреть профиль Отправить личное сообщение для VisualDima Найти все сообщения от VisualDima
  № 3  
Ответить с цитированием
VisualDima
 
Аватар для VisualDima

Регистрация: May 2009
Сообщений: 26
Чтобы еще раз все перепроверить, сделал отдельный проект где содержится только то, что нужно для теста.
Вот исходная картинка, как она выглядит в редакторе (фактически, редактировался только альфа-канал, цвет же везде белый 0xffffff):


Шейдер максимально простой (только XYZ и UV)
Код AS3:
			var vertexShaderAssembler:AGALMiniAssembler = new AGALMiniAssembler();
			vertexShaderAssembler.assemble ( Context3DProgramType.VERTEX,
				"m44 op, va0, vc0\n" +
				"mov v0, va0\n" +			// XYZ -> v0
				"mov v1, va1\n"				// UV -> v1
			);      
			var fragmentShaderAssembler:AGALMiniAssembler = new AGALMiniAssembler();
			fragmentShaderAssembler.assemble ( Context3DProgramType.FRAGMENT,  
				"tex ft0, v1, fs0 <2d,repeat,nomip,linear>\n" +  
				"mov oc, ft0\n"                  
			);
			m_pShaderProgram = m_pContext3D.createProgram();
			m_pShaderProgram.upload(vertexShaderAssembler.agalcode, fragmentShaderAssembler.agalcode);
Создание текстуры (mipmapping'а нет):
Код AS3:
			m_pTexture = m_pContext3D.createTexture(m_pBitmap.width, m_pBitmap.height,
                                          Context3DTextureFormat.BGRA, false);
			m_pTexture.uploadFromBitmapData(m_pBitmap.bitmapData, 0);
Вывожу два квада. Слева без блендинга:
Код AS3:
setBlendFactors(Context3DBlendFactor.ONE, Context3DBlendFactor.ZERO)
Справа с обычным блендингом:
Код AS3:
setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA)
Внизу просто addChaild'ом добавил копию загруженной битмапы, чтобы проверить, что она загрузилась правильно (собственно, при выводе с блендингом должна быть именно такая картинка).
Вот что получилось в результате:


Либо я чего-то не понимаю, либо да, произвол. Слов нет кроме матерных.
Могу выложить весь проект (сделан в FlashDevelop'е)