{"id":21,"date":"2007-05-29T10:05:22","date_gmt":"2007-05-29T09:05:22","guid":{"rendered":"http:\/\/www.lightrock.biz\/index.php\/?p=18"},"modified":"2011-05-27T17:23:32","modified_gmt":"2011-05-27T15:23:32","slug":"tigerheart-ii-objectives-for-the-graphics-engine","status":"publish","type":"post","link":"https:\/\/lightrocker.lightrock.biz\/?p=21","title":{"rendered":"TigerHeart II: Objectives for the graphics engine"},"content":{"rendered":"<p>The 3D engine is the largest and most addressed extension of the first &#8220;TigerHeart&#8221; version. Because it is possible to use it not only for three-dimensional presentation but also for hardware-accelerated flat, 2D drawing the notation will be changed to the more indicative term &#8216;graphics engine&#8217;.<br \/>\nFollowing characteristics should be achieved:<\/p>\n<ol>\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Api\" target=\"_blank\">API<\/a> base: It must be able to utilize <a href=\"http:\/\/en.wikipedia.org\/wiki\/Direct3D\" target=\"_blank\">Direct3D<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Opengl\" target=\"_blank\">OpenGL<\/a> for hardware-accelerated display.<\/li>\n<li>Standardization: The objects should be accessible and modifiable independently from the graphics API, which is currently active. So a scene, which is created with DirectX, can be rendered with OpenGL and vice versa and tools and helper functions have to be created only once. Anyway the engine gains specialized interfaces, methods and attributes for particular API functionalities and performance issues.<\/li>\n<li>Object types: There are two major kinds of objects. Displayable ones (like graph <a href=\"http:\/\/en.wikipedia.org\/wiki\/Node_%28computer_science%29\" target=\"_blank\">nodes<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Polygon_mesh\" target=\"_blank\">polygon meshes<\/a>) are unilaterally interdependent, transformable and have got the ability to be <a href=\"http:\/\/en.wikipedia.org\/wiki\/Rendering_%28computer_graphics%29\" target=\"_blank\">rendered<\/a> and attributes like <a href=\"http:\/\/en.wikipedia.org\/wiki\/Bounding_volume\" target=\"_blank\">bounding volumes<\/a> and a position vector. They use states (like <a href=\"http:\/\/en.wikipedia.org\/wiki\/Shader\" target=\"_blank\">shaders<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Texture_mapping\" target=\"_blank\">textures<\/a>), which are the second kind and on a par, for rendering. Besides <a href=\"http:\/\/en.wikipedia.org\/wiki\/Octree\" target=\"_blank\">octrees<\/a> will help for <a href=\"http:\/\/www.gamedev.net\/reference\/articles\/article1212.asp\" target=\"_blank\">culling<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Collision_detection\" target=\"_blank\">collision detection<\/a>, fonts are being used by text objects to show letters, animations to transform nodes by presets, cameras for view manipulation and light sources for illumination.<\/li>\n<li>Multi-pass: Displayable objects should have the ability to be rendered multiple times using different sets of states. This is important for generating shadows, effects and complex lighting.<\/li>\n<li>Streaming: Rendering operations are stored into buffers, which can be sorted to reduce state changes and to meet other, hardware-dependent conditions for performance increases. These stream buffers can be processed in another thread than the generating one. That way the scenery is being modifiable for the next frame while the previous one is still being drawn.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>The 3D engine is the largest and most addressed extension of the first &#8220;TigerHeart&#8221; version. Because it is possible to use it not only for three-dimensional presentation but also for hardware-accelerated flat, 2D drawing the notation will be changed to the more indicative term &#8216;graphics engine&#8217;.<br \/>\nFollowing characteristics should be achieved:<\/p>\n<p>API base: It must be able &hellip; <\/p>\n<p class=\"toivo-read-more\"><a href=\"https:\/\/lightrocker.lightrock.biz\/?p=21\" class=\"more-link\">Read more <span class=\"screen-reader-text\">TigerHeart II: Objectives for the graphics engine<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":{"0":"post-21","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-tigerheart2","7":"entry"},"_links":{"self":[{"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=\/wp\/v2\/posts\/21","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=21"}],"version-history":[{"count":1,"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=\/wp\/v2\/posts\/21\/revisions"}],"predecessor-version":[{"id":45,"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=\/wp\/v2\/posts\/21\/revisions\/45"}],"wp:attachment":[{"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lightrocker.lightrock.biz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}