Render İlkelleri – Analizi Yaptırma Fiyatları – Yazılım Analizi Örnekleri – Ücretli Analizi Yaptırma – Ücretli Yazılım Yaptırma
Render İlkelleri
Burada noktalar, çizgiler ve üçgenler de dahil olmak üzere ilkelleri oluşturmak için çerçevemizi genişletiyoruz. Önce ilkel öğeler için bir dizi 3B konum oluşturuyoruz ve ardından köşe gölgelendiricide ilkel konumları ve renkleri değiştirerek ilkelleri canlandırıyoruz.
Temel Öğeler Oluşturma
InitD3D10Device yönteminde, gölgelendirici oluşturmayı etkinleştirmek için bazı yeni kod segmentleri ekliyoruz. Efekt dosyasından bir efekt nesnesi oluşturuyoruz ve oluşturulan efekt nesnesinden render tekniklerini alıyoruz. Ayrıca ilkel öğeler için tepe noktaları ve grafik boru hattına köşelerin formatını söyleyen bir giriş düzeni oluşturuyoruz.
Yukarıdaki kodda öncelikle bir ASCII efekt dosyasından (Example01.fx) bir efekt nesnesi oluşturuyoruz. Efekt dosyası, gölgelendirici programları (veya sadece gölgelendiricileri) ve işleme ve animasyon için gerekli teknikleri içerir. Bu örnekte, çalışma zamanında ilkel konumları ve renkleri değiştirmek için gölgelendiriciler kullanıyoruz.
İlkel konumları ve renkleri değiştirmek için uygulamada C++ kodu yazarak aynı şeyi başarabilsek de, gölgelendiriciler daha fazla esneklik ve verimlilik sağlar. Bu çalışmada, C++ uygulama programı ile gölgelendirici programlarını basitçe uygulama ve gölgelendiriciler olarak adlandırarak ayırt edeceğiz. Efekt nesnesini oluşturmak için kod aşağıdadır. Efekt dosyasını daha sonra detaylı olarak anlatacağız.
Bir işleme tekniği, işlemeyi gerçekleştirmek için köşe gölgelendirici, geometri gölgelendirici, piksel gölgelendirici, örnekleyici, doku ve diğerlerinin durumlarını belirtir. Normalde bir efekt dosyası, bir veya daha fazla işleme tekniğini tanımlar.
Example01.fx dosyasında “RenderScene” adında bir teknik tanımlıyoruz. Teknik nesneyi elde etmek için ID3D10Effect::GetTechniqueByName() yöntemini çağırıyoruz ve ad olarak “RenderScene” kullanıyoruz. Daha sonra gerçek işlemeyi yapmak için bu tekniği kullanacağız.
Bir tepe noktasının bir konumu ve ayrıca renk, normal ve doku koordinatları gibi diğer isteğe bağlı nitelikleri vardır. Bu örnekte, bir tepe noktası için yalnızca konum özniteliğini kullanıyoruz.
Primitif vertex pozisyonunu GPU’ya gönderebilmek için uygulamamızda vertex formatını tanımlamamız gerekmektedir. Direct3D 10’da, bir C yapısı kullanılarak bir köşe biçimi tanımlanır. Yapı, farklı köşe özellikleri için alanlara sahiptir. Bu örnekte sadece vertex pozisyonunu kullandığımız için vertex format yapımızı tek bir D3DXVECTOR3 alanı ile tanımlıyoruz.
Daha sonra, ilkel köşeleri saklamak için sistem belleğinde bir arabellek oluşturuyoruz. Tampon, işleme için GPU’ya gönderilecek. Tampon yalnızca bir bellek yığını olduğundan, GPU’ya tampondan öznitelikleri nasıl çıkaracağını söylememiz gerekir.
Bu, bir giriş düzeni oluşturarak yapılır. Giriş düzeni, köşelerin yapısını GPU tarafından anlaşılabilecek şekilde tanımlayan bir Direct3D nesnesidir. Bir D3D10_INPUT_ELEMENT_DESC dizisi oluşturarak bir giriş düzeni tanımlarız.
Render alma After Effects
Enscape render
Video render ne Demek
3D render programı
Enscape Render ayarları
React render
Render ne Demek
Enscape render Alma tuşu
Dizinin içinde, her öğe bir köşe özelliğine karşılık gelir ve yedi alana sahiptir:
1. SemanticName: POSITION, COLOR, vb. gibi shader sistemi tarafından önceden tanımlanmış bu öğenin doğasını veya amacını açıklayan bir kelime içeren bir dize.
2. SemanticIndex: anlamsal isme ek. Bir köşe, aynı yapıya sahip birden fazla özniteliğe sahip olabilir. Örneğin, 2 set doku koordinatına veya 2 set renge sahip olabilir. “COLOR0” ve “COLOR1” gibi sayıların eklendiği anlamsal adları kullanmak yerine, iki öğe, 0 ve 1 farklı anlamsal indeksleri olan “COLOR” adlı tek bir anlamsal adı paylaşabilir.
3. Format: bu eleman için kullanılacak veri tipi. Örneğin, bir DXGI_FORMAT_R32G32B32_FLOAT biçimi, öğeyi 12 bayt uzunluğunda yapan üç adet 32 bitlik kayan nokta sayısına sahiptir. DXGI_FORMAT_R16G16B16A16_UINT biçimi, öğeyi 8 bayt uzunluğunda yapan dört adet 16 bitlik işaretsiz tam sayıya sahiptir.
4. InputSlot: köşe arabelleğinin konumu. Bir Direct3D 10 uygulaması, bir köşe arabelleği kullanılarak köşe verilerini GPU’ya gönderir. Çoklu (16) köşe arabelleği GPU’ya aynı anda beslenebilir. Her köşe arabelleği, 0 ile 15 arasında değişen bir giriş yuvası numarasına bağlıdır. Girdi Yuvası alanı, GPU’ya bu öğe için hangi köşe arabelleğini getirmesi gerektiğini söyler.
5. AlignedByteOffset: köşe arabelleğinde bir kayma. Köşe arabelleği, yalnızca bir bellek yığınıdır. AlignedByteOffset alanı, GPU’ya bu öğe için bu bellek öbeğinde nereden getirmeye başlaması gerektiğini söyler.
6. InputSlotClass: Bu alan D3D10_INPUT_PER_VERTEX_DATA değerine sahiptir. Bir uygulama örnekleme kullandığında, bir giriş düzeninin InputSlotClass’ını D3D10_INPUT_PER_INSTANCE_DATA olarak ayarlayabilir. Örneklerimiz için özel olarak D3D10_INPUT_PER_VERTEX_DATA kullanacağız.
7. InstanceDataStepRate: Bu alan örnekleme için kullanılır. Şu anda örnekleme kullanmadığımız için bu alan kullanılmaz ve 0 olarak ayarlanır.
Örnek tepe noktamızın yalnızca bir özelliği, konumu olduğundan, dizinin yalnızca bir öğesi vardır. Son olarak, gerçekten bir köşe düzeni nesnesi oluşturmak için ID3D10Device::CreateInputLayout() yöntemini çağırıyoruz. CreateInputLayout() yöntemi, köşe gölgelendiricisinden, yani giriş imzasından bir parametre listesi gerektirir.
Bunu, tekniğin ilk işleme geçişini temsil eden bir geçiş nesnesi elde etmek için önce tekniğin GetPassByIndex() yöntemini çağırarak yaparız. Geçişlerde oluşturma, sahnenin farklı niteliklerini ayrı ayrı oluşturma işlemidir. Burada çok geçişli oluşturmayı kullanmasak da, Direct3D böyle bir mekanizma sağlar.
Ardından, bir geçiş açıklama yapısı elde etmek için geçiş nesnesinin GetDesc() yöntemini çağırırız. Bu yapı içinde, bu geçişte kullanılan vertex shader’ın giriş imzasını temsil eden ikili verilere bir işaretçi olan pIAInputSignature adlı bir alan vardır. Etkin köşe düzeni olarak bir köşe düzeni nesnesi oluşturmak için ID3D10Device::IASetInputLayout() öğesini çağırıyoruz. Bunların hepsini yapmak için kod aşağıda gösterilmiştir.
CreateVertexBuffer() yönteminde, ilkel konum için gerçek verileri yaratır ve bu verileri işleme için grafik boru hattına göndeririz. Yöntemde, gerçek köşe verilerini köşe arabelleği nesnesinde depolarız ve nesneyi grafik boru hattına göndeririz.
Direct3D 10’da bir köşe arabelleği oluşturmak için iki yapıyı, D3D10_BUFFER_DESC ve D3D10_SUBRESOURCE_DATA’yı dolduruyoruz ve ardından arabellek oluşturmayı bitirmek için ID3D10Device::CreateBuffer()’ı çağırıyoruz. D3D10_BUFFER_DESC, oluşturulacak köşe arabelleği nesnesini tanımlar ve D3D10_SUBRESOURCE_DATA, oluşturma sırasında köşe arabelleğine kopyalanacak gerçek verileri açıklar. Köşe arabelleği oluşturulduktan sonra, onu aygıta bağlamak için ID3D10Device::IASetVertexBuffers() öğesini çağırırız.
3D render programı Enscape render Enscape render Alma tuşu Enscape Render ayarları React render Render alma After Effects Render ne Demek Video render ne Demek