Paket | flash.display |
Sınıf | public class Shader |
Miras Alma | Shader Object |
Alt Sınıflar | ColorBurnShader, ColorDodgeShader, ColorShader, ExclusionShader, HueShader, LuminosityMaskShader, LuminosityShader, SaturationShader, SoftLightShader |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
shader
özelliğine Shader örneğini atarsınız.
Gölgelendirici, aynı anda bir piksel olacak şekilde bir görüntüdeki tüm piksellerde çalışan bir işlevi tanımlar. İşleve yapılan her çağrının sonucu, görüntüde o piksel koordinatındaki çıktı rengidir. Gölgelendirici, içerikleri işlevin çıktısını belirlemede kullanılabilen görüntüler niteliğindeki bir veya daha fazla girdi görüntüsü belirtebilir. Ayrıca gölgelendirici, işlev çıktısının hesaplanmasında kullanılabilen girdi değerleri niteliğindeki bir veya daha fazla parametreyi de belirtebilir. Tek bir gölgelendirici çalıştırmasında, girdi ve parametre değerleri sabittir. Değişen tek şey, rengi işlev sonucu olan pikselin koordinatıdır. Gölgelendirici işlevi, gölgelendirici çalıştırma performansını yükseltmek için paralel olarak birden çok çıktı piksel koordinatı çalıştırması çağırır.
Bir URLLoader örneği kullanılarak çalışma zamanında gölgelendirici bayt kodu yüklenebilir. Şu örnek, çalışma zamanında gölgelendirici bayt kodunun yüklenmesini ve bir Shader örneğine bağlanmasını gösterir.
var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, onLoadComplete); loader.load(new URLRequest("myShader.pbj")); var shader:Shader; function onLoadComplete(event:Event):void { // Create a new shader and set the loaded data as its bytecode shader = new Shader(); shader.byteCode = loader.data; // You can also pass the bytecode to the Shader() constructor like this: // shader = new Shader(loader.data); // do something with the shader }
[Embed]
meta veri etiketini kullanarak derleme zamanında gölgelendiriciyi SWF dosyasına da gömebilirsiniz. [Embed]
meta veri etiketi yalnızca SWF dosyasını derlemek için Flex SDK kullanırsanız mevcuttur. [Embed]
etiketinin source
parametresi gölgelendirici dosyasını işaret eder, mimeType
parametresi ise bu örnekteki gibi "application/octet-stream"
olur:
[Embed(source="myShader.pbj", mimeType="application/octet-stream)] var MyShaderClass:Class; // ... // create a new shader and set the embedded shader as its bytecode var shaderShader = new Shader(); shader.byteCode = new MyShaderClass(); // You can also pass the bytecode to the Shader() constructor like this: // var shader:Shader = new Shader(new MyShaderClass()); // do something with the shader
Her iki durumda da ham gölgelendiriciyi (URLLoader.data
özelliği veya [Embed]
veri sınıfı örneği) Shader örneğine bağlarsınız. Önceki örneklerin de gösterdiği gibi, bunu iki şekilde yapabilirsiniz. Gölgelendirici bayt kodunu argüman olarak Shader()
yapıcısına iletebilirsiniz. Alternatif olarak bu kodu Shader örneğinin byteCode
özelliği olarak da ayarlayabilirsiniz.
Shader örneği oluşturulduktan sonra, birçok şekilde kullanılabilir:
- Gölgelendirici dolgusu: Gölgelendiricinin çıktısı, çizim API'si ile çizilen içerik için bir dolgu olarak kullanılır. Shader örneğini argüman olarak
Graphics.beginShaderFill()
yöntemine iletin. - Gölgelendirici filtresi: Gölgelendiricinin çıktısı, görüntüleme nesnesine uygulanan bir grafik filtresi olarak kullanılır. Shader örneğini, ShaderFilter örneğinin
shader
özelliğine atayın. - Karışım modu: Gölgelendiricinin çıktısı, örtüşen iki görüntüleme nesnesi arasında harmanlayıcı olarak oluşturulur. Shader örneğini, iki görüntüleme nesnesinin üst kısmının
blendShader
özelliğine atayın. - Arka plan gölgelendiricisi işleme: Gölgelendirici arka planda çalışarak görüntünün donma olasılığını önler ve işleme tamamlandığında bir olay gönderir. Shader örneğini, ShaderJob örneğinin
shader
özelliğine atayın.
Gölgelendirme dolguları, filtreler ve karışımlar GPU görüntü oluşturmada desteklenmez.
Mobil Tarayıcı Desteği: Bu özellik mobil tarayıcılarda desteklenmez.
AIR profil desteği: Bu özellik tüm masaüstü işletim sistemlerinde desteklenir ancak tüm mobil aygıtlarda desteklenmez. AIR for TV aygıtlarında desteklenmez. Birden fazla profilde API desteği ile ilgili daha fazla bilgi için bkz. AIR Profil Desteği.
İlgili API Öğeleri
flash.display.Graphics.beginShaderFill()
flash.display.ShaderJob
flash.filters.ShaderFilter
flash.net.URLLoader
Özellik | Tanımlayan: | ||
---|---|---|---|
byteCode : ByteArray [salt yazılır]
Bu Shader örneğinin ham gölgelendirici bayt kodu. | Shader | ||
constructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. | Object | ||
data : ShaderData
Shader örneğinin parametrelerine, girdi görüntülerine ve meta verilerine erişilmesini sağlar. | Shader | ||
precisionHint : String
Gölgelendiricinin gerçekleştirdiği matematik işlemlerinin kesinliği. | Shader |
Yöntem | Tanımlayan: | ||
---|---|---|---|
Yeni bir Shader örneği oluşturur. | Shader | ||
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Belirtilen nesnenin dize olarak temsil edilen halini döndürür. | Object | ||
Belirtilen nesnenin temel değerini döndürür. | Object |
byteCode | özellik |
data | özellik |
data:ShaderData
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
Shader örneğinin parametrelerine, girdi görüntülerine ve meta verilerine erişilmesini sağlar. Shader örneği oluşturulduğunda, gölgelendiricinin parametrelerini temsil eden ShaderParameter nesneleri, gölgelendiricinin girdi görüntülerini temsil eden ShaderInput nesneleri ve gölgelendiricinin meta verilerini temsil eden diğer değerler, data
özellik nesnesinin özellikleri olarak eklenir. Gölgelendiriciyi çözümlemek ve parametre ve girdi değerlerini ayarlamak için bu özellikler kullanılabilir.
data
nesnesinin dinamik özelliklerine erişme ve bu özellikleri işleme hakkında bilgi almak için ShaderData sınıfının açıklamasına bakın.
Uygulama
public function get data():ShaderData
public function set data(value:ShaderData):void
İlgili API Öğeleri
precisionHint | özellik |
precisionHint:String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
Gölgelendiricinin gerçekleştirdiği matematik işlemlerinin kesinliği.
precisionHint
özelliğinin olası değerleri kümesi, ShaderPrecision sınıfındaki sabitler tarafından tanımlanır.
Varsayılan değer ShaderPrecision.FULL
olur. Kesinliğin ShaderPrecision.FAST
değerine ayarlanması, kesinlikten sapılacak olsa da, matematik işlemlerini hızlandırabilir.
Tam kesinlik modu (ShaderPrecision.FULL
) tüm matematik işlemlerini tam IEEE 32 bit kayar standart genişliğinde hesaplar ve tüm platformlarda tutarlı davranış sağlar. Bu modda, trigonometri ve üslü işlevler gibi bazı matematik işlemleri yavaş olabilir.
Hızlı kesinlik modu (ShaderPrecision.FAST
) maksimum performans için tasarlanmıştır, ancak farklı platformlarda ve tek tek CPU konfigürasyonlarında tutarlı şekilde çalışmaz. Birçok durumda bu kesinlik düzeyi, görünebilir yapılar olmadan grafik efektleri oluşturmak için yeterlidir.
Kesinlik modu seçimi, şu gölgelendirici işlemlerini etkiler. Bu işlemler, SSE talimat kümesine sahip bir Intel işlemcide daha hızlıdır:
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
atan(x, y)
exp(x)
exp2(x)
log(x)
log2(x)
pow(x, y)
reciprocal(x)
sqrt(x)
Uygulama
public function get precisionHint():String
public function set precisionHint(value:String):void
İlgili API Öğeleri
Shader | () | Yapıcı |
Bu örneğin, uygulamanın çıktı diziniyle aynı dizinde "donothing.pbj" adında bir gölgelendirici bayt kodu dosyası bulunduğunu varsaydığını unutmayın. DoNothing gölgelendiricisi için Pixel Bender kaynak kodu, ShaderData sınıf örneğinde kullanılabilir.
package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class LoadedShaderExample extends Sprite { private var loader:URLLoader; public function LoadedShaderExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("donothing.pbj")); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(); shader.byteCode = loader.data; // do something with the Shader instance } } }
Bu örneğin, uygulamanın kaynak koduyla aynı dizinde "donothing.pbj" adında bir gölgelendirici bayt kodu dosyası bulunduğunu varsaydığını ve SWF dosyasını derlemek için Flex SDK kullanıldığını unutmayın. DoNothing gölgelendiricisi için Pixel Bender kaynak kodu, ShaderData sınıf örneğinde kullanılabilir.
package { import flash.display.Shader; import flash.display.Sprite; public class EmbeddedShaderExample extends Sprite { [Embed(source="donothing.pbj", mimeType="application/octet-stream")] private static var DoNothingShader:Class; public function EmbeddedShaderExample() { var shader:Shader = new Shader(); shader.byteCode = new DoNothingShader(); // do something with the Shader instance } } }
Tue Jun 12 2018, 01:09 PM Z