2012-10-13 2 views
4

AS3에서지도를 프로그래밍하는 데 익숙하지만 Pixel Bender를 무릎에 꿇었습니다. 그 이후로 Pixel Bender를 사용하여 배열에 대한 병렬 계산을 수행했습니다. Stage3D를이 용도로 사용할 수 있습니까? 계산 픽셀 벤더를 사용하는Stage3d를 사용하여 병렬 계산을 수행 할 수 있습니까?

예 :

http://wonderfl.net/c/eFp0/

내 목표는 [x1, y1, x2, y,2 , . . ., xn, yn]의 벡터를 얻을 [f(x1), f(y1), f(x2), f(y2), . . . ,f(xn), f(yn)]의 벡터를 반환하는 것입니다. 더 많은 것 f(x1, y1).x , f(x1,y1).y 같이. 나는 당신이 일반적인 아이디어를 얻을 것이라고 확신한다.

일반적으로지도라고 부르는 것을 말합니다. 다음은 철저한 설명입니다.

http://en.wikipedia.org/wiki/Map_%28higher-order_function%29

나는 픽셀 벤더와 나는 10 배의 속도 향상과 함께이 작업을 수행 할 수있는 것으로 나타났습니다. Stage3D에서 동일한 작업을 수행 할 수있는 방법이 있습니까?

답변

2

C++와 같은 다른 언어와 달리, 나는 조립 명령어를 Program3D Shaders with Adobe Graphics Assembly Language 이상으로 GPU에 전달하는 방법을 알고 있지 않습니다.

Pixel Bender 3D 오프라인 도구를 사용하여 프로그램 바이트 코드를 만들 수 있습니다. 또한 동적으로 생성 될 수도 있습니다. AGALMiniAssembler 클래스 은 AGAL 어셈블리 언어 프로그램을 AGAL 바이트 코드로 컴파일하는 유틸리티 클래스입니다. 클래스는 런타임의 일부가 아닙니다. 셰이더 프로그램 을 업로드하면 바이트 코드가 현재 장치 (예 : OpenGL 또는 Direct3D)의 네이티브 셰이더 언어로 컴파일됩니다. 런타임은 업로드시 바이트 코드의 유효성을 검사합니다.

프로그램은 Context3D drawTriangles() 메소드가 이 호출 될 때마다 실행됩니다. 버텍스 프로그램은 그려 질 삼각형의 목록 인 의 각 버텍스에 대해 한 번 실행됩니다. 프래그먼트 프로그램은 삼각형 표면의 각 픽셀에 대해 번 실행됩니다.

Pixel Bender로 얻는 성능에 근접하지 않으면 ActionScript Workers을 사용하여 Functor를 병렬화 할 수 있습니다.

작업자 객체 Flash 런타임의 가상 인스턴스 인 작업자를 나타낸다. 각 Worker 인스턴스는 단일 작업자의 수명주기 및 공유 데이터에 대해 액세스를 제어하고 제공합니다.

코드의 여러 세트를 동시에 실행하는 기능은 동시성으로 알려져 있습니다.

Adobe 프리미엄 기능, Alchemy/FlasCC, XC API, Pixel Bender 및 ActionScript 다음으로 진행되는 Flash Platform은 빠르게 발전하고 있습니다.

+0

안녕하세요 Jason, Pixel Bender 3D가 내가 필요한 것입니다. 진심으로 감사드립니다. – zehelvion

+0

픽셀 벤더 3d를 테스트 한 결과 무대에서 벡터로 데이터를 신속하게 되돌릴 수있는 방법을 찾을 수없는 것 같습니까? 그 일을 성취 할 방법을 알고 있습니까? – zehelvion

+0

@ArthurWulfWhite 확실치 않지만, FlasCC (http://gaming.adobe.com/technologies/flascc/) (이전의 연금술)는 성취하고자하는 일과 더 밀접한 관계가 있습니다. –

관련 문제