|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2009
Адрес: Kazakhstan, Almaty
Сообщений: 121
|
Правильное задание параметров для шейдера (2 input изображения)
(Выбрал раздел AS3, потомучто по созданию шейдера нет вопроса - вопрос по ошибке в AS3)
Сложилась следующая ситуация. Есть шейдер. (просто для теста) <languageVersion : 1.0;> kernel test < namespace : "_"; vendor : "_"; version : 1; description : "test"; > { input image4 src1; input image4 src2; output pixel4 dst; void evaluatePixel() { dst = sampleNearest(src2,float2(outCoord().x,outCoord().y)); } } читаю в хелпе: However, in some cases, especially if a shader defines multiple inputs, you do explicitly set a value for an input. Each input that is defined in a shader is represented in ActionScript by a ShaderInput object. The ShaderInput object is a property of the ShaderData instance in the Shader object’s data property, as described in Identifying shader inputs and parameters. For example, suppose a shader defines an input named src, and that shader is linked to a Shader object named myShader. In that case you access the ShaderInput object corresponding to the src input using the following identifier: myShader.data.src я так понял — myShader - Shader, src — имя параметра (в моем случае src1, src2) пробую таим способом: var shdInput1:ShaderInput=new ShaderInput(); var shdInput2:ShaderInput=new ShaderInput(); shdInput1.input=img1.bitmapData; shdInput2.input=img2.bitmapData; // shader.data.src1=shdInput1; shader.data.src2=shdInput2; ошибка: ArgumentError: Error #2163: Тип входа шейдера src1 не совместим с этой операцией. at flash.display::DisplayObject/set filters() Autumn - BitmapData. пробую: ошибка: пробую без input: ошибка: ArgumentError: Error #2167: Для этой операции шейдер не имеет требуемого количества входов. at flash.display::DisplayObject/set filters() var shdData:ShaderData=shader.data; for (var prop:String in shdData) { trace(shdData[prop]); } на Adobe Forums нашел похожий пост. Там проблема решилась путем добавления input но в моем случае не помогло. Еще пишут: Цитата:
Вот... Где я ошибаюсь? Как правильно задать эти параметры? ps. на всякий случай весь код package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Shader; import flash.display.ShaderData; import flash.display.ShaderInput; import flash.display.ShaderJob; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.ShaderFilter; /** * ... * @author criadone */ public class Main extends Sprite { [Embed(source="../test1.pbj", mimeType="application/octet-stream")] private var ShaderClass:Class; [Embed(source = "../image1.jpg")] private var Source1:Class; private var img1:Bitmap=new Source1(); [Embed(source = "../image2.jpg")] private var Source2:Class; private var img2:Bitmap=new Source2(); private var shader:Shader; private var sf:ShaderFilter; private var someBitmap:Bitmap; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // someBitmap=new Bitmap(new BitmapData(640,480,false,0x303030)); addChild(someBitmap); // shader = new Shader(); shader.byteCode = new ShaderClass(); // var shdInput1:ShaderInput=new ShaderInput(); var shdInput2:ShaderInput=new ShaderInput(); shdInput1.input=img1.bitmapData; shdInput2.input=img2.bitmapData; // shader.data.src1=img1.bitmapData; shader.data.src2=img2.bitmapData; var shdData:ShaderData=shader.data; for (var prop:String in shdData) { trace(shdData[prop]); } // var sf:ShaderFilter=new ShaderFilter(shader); // someBitmap.filters=[sf]; //1 } } }
__________________
заткнись и делай |
|
|||||
Регистрация: Apr 2010
Сообщений: 219
|
Так для пиксель-бендера свой раздел есть.
К сожалению по сабжу не компетентен. |
|
|||||
Регистрация: Mar 2009
Адрес: Kazakhstan, Almaty
Сообщений: 121
|
все, разобрался.
запись вида правильна. просто один из инпутов и вправду не использовался и был проигнорирован при компиляции.
__________________
заткнись и делай |
Часовой пояс GMT +4, время: 05:05. |
|
« Предыдущая тема | Следующая тема » |
Теги |
error , input , Shader , shaderInput |
|
|