<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://starsonata.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BlindSide</id>
		<title>Starsonata Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://starsonata.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BlindSide"/>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php/Special:Contributions/BlindSide"/>
		<updated>2026-04-29T14:58:01Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.7</generator>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=GalDev:Client2SigSlot&amp;diff=13794</id>
		<title>GalDev:Client2SigSlot</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=GalDev:Client2SigSlot&amp;diff=13794"/>
				<updated>2009-11-19T03:47:35Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GUI Element Signals ==&lt;br /&gt;
&lt;br /&gt;
(Note on &amp;quot;item based&amp;quot; elements. These include listbox, combobox, table, contextmenu and generally any element that holds a list of items. For tables &amp;quot;item&amp;quot; generally refers to a row.)&lt;br /&gt;
&lt;br /&gt;
'''value_changed''': (Param is core::stringw) Sent by all gui elements when the value changes. For scrollbars and such this would be the numerical value in the form of a string, and for item-based elements such as list it will send the text of the selected item (Not the user data) if an item is selected.&lt;br /&gt;
&lt;br /&gt;
'''checkbox_checked''': (No params) Sent by a checkbox when it becomes checked.&lt;br /&gt;
&lt;br /&gt;
'''checkbox_unchecked''': (No params) Sent by a checkbox when it becomes unchecked.&lt;br /&gt;
&lt;br /&gt;
'''button_clicked''': (No params) Sent by a button when a button is clicked. Specifically this means that the button was held down and then the mouse was released over the button comfirming the action.&lt;br /&gt;
&lt;br /&gt;
'''button_down''': (No params) Sent by a button when it is held down for the first time.&lt;br /&gt;
&lt;br /&gt;
'''button_up''': (No params) Sent by a button when it is released (Even if the mouse is not over the button).&lt;br /&gt;
&lt;br /&gt;
'''item_selected_text''': (Param is core::stringw) Sent by item based elements when a new item is selected. It sends the text of the new item.&lt;br /&gt;
&lt;br /&gt;
'''item_selected_index''': (Param is core::stringw) Sent by item based elements when a new item is selected. It sends the numerical index in the form of a string of the new item.&lt;br /&gt;
&lt;br /&gt;
'''item_selected_data''': (Param is core::stringw) Sent by item based elements when a new item is selected. It sends the user data in the form of a string of the new item.&lt;br /&gt;
&lt;br /&gt;
'''hidden''': (No params) Sent when a gui element is set non-visible (Not sent when it's destroyed!).&lt;br /&gt;
&lt;br /&gt;
'''revealed''': (No params) Sent when a gui element was previously non-visible and is now visible (Not sent when it's created).&lt;br /&gt;
&lt;br /&gt;
'''created''': (No params) Sent when a gui element is first created.&lt;br /&gt;
&lt;br /&gt;
== GUI Element Slots ==&lt;br /&gt;
&lt;br /&gt;
'''setText''': (Param is core::stringw) Takes a string and uses it to set the element data. For item-based elements each item will be seperated by a delimiter. For tables each field separated by a delimiter indicates a cell and the data will wrap around to a new row based on the number of columns. For scrollbars and such this will be the numerical value in the form of a string.&lt;br /&gt;
&lt;br /&gt;
'''setUserData''': (Param is core::stringw) Takes a string and uses it to set the element user data. For item-based elements each item will be seperated by a delimiter. For tables each field separated by a delimiter indicates a cell and the data will wrap around to a new row based on the number of columns.&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=GalDev:Client2SigSlot&amp;diff=13793</id>
		<title>GalDev:Client2SigSlot</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=GalDev:Client2SigSlot&amp;diff=13793"/>
				<updated>2009-11-19T03:46:45Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: New page:  == GUI Element Signals ==  (Note on &amp;quot;item based&amp;quot; elements. These include listbox, combobox, table, contextmenu and generally any element that holds a list of items. For tables &amp;quot;item&amp;quot; gene...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== GUI Element Signals ==&lt;br /&gt;
&lt;br /&gt;
(Note on &amp;quot;item based&amp;quot; elements. These include listbox, combobox, table, contextmenu and generally any element that holds a list of items. For tables &amp;quot;item&amp;quot; generally refers to a row.)&lt;br /&gt;
&lt;br /&gt;
value_changed: (Param is core::stringw) Sent by all gui elements when the value changes. For scrollbars and such this would be the numerical value in the form of a string, and for item-based elements such as list it will send the text of the selected item (Not the user data) if an item is selected.&lt;br /&gt;
&lt;br /&gt;
checkbox_checked: (No params) Sent by a checkbox when it becomes checked.&lt;br /&gt;
&lt;br /&gt;
checkbox_unchecked: (No params) Sent by a checkbox when it becomes unchecked.&lt;br /&gt;
&lt;br /&gt;
button_clicked: (No params) Sent by a button when a button is clicked. Specifically this means that the button was held down and then the mouse was released over the button comfirming the action.&lt;br /&gt;
&lt;br /&gt;
button_down: (No params) Sent by a button when it is held down for the first time.&lt;br /&gt;
&lt;br /&gt;
button_up: (No params) Sent by a button when it is released (Even if the mouse is not over the button).&lt;br /&gt;
&lt;br /&gt;
item_selected_text: (Param is core::stringw) Sent by item based elements when a new item is selected. It sends the text of the new item.&lt;br /&gt;
&lt;br /&gt;
item_selected_index: (Param is core::stringw) Sent by item based elements when a new item is selected. It sends the numerical index in the form of a string of the new item.&lt;br /&gt;
&lt;br /&gt;
item_selected_data: (Param is core::stringw) Sent by item based elements when a new item is selected. It sends the user data in the form of a string of the new item.&lt;br /&gt;
&lt;br /&gt;
hidden: (No params) Sent when a gui element is set non-visible (Not sent when it's destroyed!).&lt;br /&gt;
&lt;br /&gt;
revealed: (No params) Sent when a gui element was previously non-visible and is now visible (Not sent when it's created).&lt;br /&gt;
&lt;br /&gt;
created: (No params) Sent when a gui element is first created.&lt;br /&gt;
&lt;br /&gt;
== GUI Element Slots ==&lt;br /&gt;
&lt;br /&gt;
setText: (Param is core::stringw) Takes a string and uses it to set the element data. For item-based elements each item will be seperated by a delimiter. For tables each field separated by a delimiter indicates a cell and the data will wrap around to a new row based on the number of columns. For scrollbars and such this will be the numerical value in the form of a string.&lt;br /&gt;
&lt;br /&gt;
setUserData: (Param is core::stringw) Takes a string and uses it to set the element user data. For item-based elements each item will be seperated by a delimiter. For tables each field separated by a delimiter indicates a cell and the data will wrap around to a new row based on the number of columns.&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=GalDev:Client2GenericGui&amp;diff=13704</id>
		<title>GalDev:Client2GenericGui</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=GalDev:Client2GenericGui&amp;diff=13704"/>
				<updated>2009-11-08T12:09:14Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: New page: This page is a reference for all the reserved generic signals/slots in the new ui. These will be used for generic messageboxes/input boxes:&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a reference for all the reserved generic signals/slots in the new ui. These will be used for generic messageboxes/input boxes:&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13359</id>
		<title>Development/Client2GuiConversion</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13359"/>
				<updated>2009-10-06T13:46:28Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13336</id>
		<title>Development/Client2GuiConversion</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13336"/>
				<updated>2009-09-30T21:38:00Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: /* Client 2 Gui Conversion Guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Note: Sorry the wiki formatting is kind of difficult for me, if someone can make the code snippets look better it would be much appreciated.&lt;br /&gt;
&lt;br /&gt;
== Client 2 Gui Conversion Guide ==&lt;br /&gt;
&lt;br /&gt;
This page is meant as a guide for converting old client 2 gui functionality over to the new system. Some of these steps are meant for clarity and to fit the new coding guidelines and thus can be skipped if one is tight on time. These will be marked as optional, although in all likely cases they should still be performed as long as they don't take much time to do so.&lt;br /&gt;
&lt;br /&gt;
The intention of this conversion is to separate the game logic code from the abstracted gui code while retaining the base functionality and re-using as much code as possible.&lt;br /&gt;
&lt;br /&gt;
Throughout this guide I will be using xfer_funds_dlg.h and .cpp as an example on how to convert the old logic functionality as it is a fairly simple class and will serve this purpose sufficiently.&lt;br /&gt;
&lt;br /&gt;
[Optional] 1. Rename class to camel case and a name more fitting for a logic class rather than a gui class. If the previous name is convoluted it would be preferable to use something more clear.&lt;br /&gt;
&lt;br /&gt;
''E.g. Change the class name from GuiDlgXferFunds to FundsTransferManager.''&lt;br /&gt;
&lt;br /&gt;
2. Remove the inheritance &amp;quot; : public GuiWindow&amp;quot; and any another GuiWindow related inheritance or derivations unless they are central to the class's operation. This includes &amp;quot;virtual bool Load(const std::string &amp;amp;filename_)&amp;quot;, although be sure to check for any important game-logic related code in &amp;quot;virtual bool Load(const std::string &amp;amp;filename_)&amp;quot;, if it's only adding event handlers and storing pointers to gui elements then those can be safely removed, this functionality will be replaced by the signal system in the new gui design. In the case of GuiDlgXferFunds the entire function can be removed, just be sure to keep in mind the list of functions that it assigned event handling to as this may prove useful in the later stages of the conversion.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	FundsTransferManager(irr::gui::IGUIElement* parent_);&lt;br /&gt;
&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
	irr::gui::IGUIEditBox *    m_credits;&lt;br /&gt;
};''&lt;br /&gt;
&lt;br /&gt;
3. The constructor for most classes that inherit from GuiWindow will usually take a parent gui element or some other gui-related parameter. These should usually be discarded with certain logic-specific parameters considered on a case by case basis. In the case of GuiDlgXferFunds the constructor parameter can be removed. In the constructor the class will usually attempt to set it's &amp;quot;Name&amp;quot; instance variable and perform other gui-related functions. These should also be considered if they seem central to the logic's operation but in the case of GuiDlgXferFunds we can just remove all of that. This actually removes the need for a constructor in this particular case altogether.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
''class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
	irr::gui::IGUIEditBox *    m_credits;&lt;br /&gt;
};''&lt;br /&gt;
&lt;br /&gt;
4. Old gui-game-logic classes usually keep pointers to relevant elements so they can be easily accessed. The new system will send and receive signals instead and does not need to be aware of the actual gui elements. The instance variables for these can be removed also. Be careful to only remove gui related instance variable, usually marked as being in the &amp;quot;gui::&amp;quot; namespace.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
''class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
};''&lt;br /&gt;
&lt;br /&gt;
5. Convert base functionality to work with the new signals system. This part is hard because it usually involves changing/refactorying other files/classes due to the old code's &amp;quot;immediate mode&amp;quot; nature, where as this new code is &amp;quot;signal&amp;quot; or &amp;quot;event&amp;quot; based. The difference in philosophy is that in the old code an action would be performed during an event and then the change in state would be read and transferred as a message.&lt;br /&gt;
&lt;br /&gt;
For example GuiPropManage creates a GuiDlgXferFunds, waits for the ok button to be clicked and for it to return, validates the result to be EDR_OK and then retrieves the amount in credits the player would like to transfer from GuiDlgXferFunds before sending the message. In the new system GuiDlgXferFunds should create the network message and send it directly upon receiving the signal that the ok button was clicked. GuiDlgXferFunds will either query the value from the edit box element by accessing the element through the name/id of the element OR it will receive the value in the form of a signal sent by the textbox element (Will need to Dorth's opinion on the intended usage here).&lt;br /&gt;
&lt;br /&gt;
 - To Be Continued -&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13335</id>
		<title>Development/Client2GuiConversion</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13335"/>
				<updated>2009-09-30T21:37:00Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: /* Client 2 Gui Conversion Guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Client 2 Gui Conversion Guide ==&lt;br /&gt;
&lt;br /&gt;
This page is meant as a guide for converting old client 2 gui functionality over to the new system. Some of these steps are meant for clarity and to fit the new coding guidelines and thus can be skipped if one is tight on time. These will be marked as optional, although in all likely cases they should still be performed as long as they don't take much time to do so.&lt;br /&gt;
&lt;br /&gt;
The intention of this conversion is to separate the game logic code from the abstracted gui code while retaining the base functionality and re-using as much code as possible.&lt;br /&gt;
&lt;br /&gt;
Throughout this guide I will be using xfer_funds_dlg.h and .cpp as an example on how to convert the old logic functionality as it is a fairly simple class and will serve this purpose sufficiently.&lt;br /&gt;
&lt;br /&gt;
[Optional] 1. Rename class to camel case and a name more fitting for a logic class rather than a gui class. If the previous name is convoluted it would be preferable to use something more clear.&lt;br /&gt;
&lt;br /&gt;
''E.g. Change the class name from GuiDlgXferFunds to FundsTransferManager.''&lt;br /&gt;
&lt;br /&gt;
2. Remove the inheritance &amp;quot; : public GuiWindow&amp;quot; and any another GuiWindow related inheritance or derivations unless they are central to the class's operation. This includes &amp;quot;virtual bool Load(const std::string &amp;amp;filename_)&amp;quot;, although be sure to check for any important game-logic related code in &amp;quot;virtual bool Load(const std::string &amp;amp;filename_)&amp;quot;, if it's only adding event handlers and storing pointers to gui elements then those can be safely removed, this functionality will be replaced by the signal system in the new gui design. In the case of GuiDlgXferFunds the entire function can be removed, just be sure to keep in mind the list of functions that it assigned event handling to as this may prove useful in the later stages of the conversion.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	FundsTransferManager(irr::gui::IGUIElement* parent_);&lt;br /&gt;
&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
	irr::gui::IGUIEditBox *    m_credits;&lt;br /&gt;
};''&lt;br /&gt;
&lt;br /&gt;
3. The constructor for most classes that inherit from GuiWindow will usually take a parent gui element or some other gui-related parameter. These should usually be discarded with certain logic-specific parameters considered on a case by case basis. In the case of GuiDlgXferFunds the constructor parameter can be removed. In the constructor the class will usually attempt to set it's &amp;quot;Name&amp;quot; instance variable and perform other gui-related functions. These should also be considered if they seem central to the logic's operation but in the case of GuiDlgXferFunds we can just remove all of that. This actually removes the need for a constructor in this particular case altogether.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
''class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
	irr::gui::IGUIEditBox *    m_credits;&lt;br /&gt;
};''&lt;br /&gt;
&lt;br /&gt;
4. Old gui-game-logic classes usually keep pointers to relevant elements so they can be easily accessed. The new system will send and receive signals instead and does not need to be aware of the actual gui elements. The instance variables for these can be removed also. Be careful to only remove gui related instance variable, usually marked as being in the &amp;quot;gui::&amp;quot; namespace.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
''class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
};''&lt;br /&gt;
&lt;br /&gt;
5. Convert base functionality to work with the new signals system. This part is hard because it usually involves changing/refactorying other files/classes due to the old code's &amp;quot;immediate mode&amp;quot; nature, where as this new code is &amp;quot;signal&amp;quot; or &amp;quot;event&amp;quot; based. The difference in philosophy is that in the old code an action would be performed during an event and then the change in state would be read and transferred as a message.&lt;br /&gt;
&lt;br /&gt;
For example GuiPropManage creates a GuiDlgXferFunds, waits for the ok button to be clicked and for it to return, validates the result to be EDR_OK and then retrieves the amount in credits the player would like to transfer from GuiDlgXferFunds before sending the message. In the new system GuiDlgXferFunds should create the network message and send it directly upon receiving the signal that the ok button was clicked. GuiDlgXferFunds will either query the value from the edit box element by accessing the element through the name/id of the element OR it will receive the value in the form of a signal sent by the textbox element (Will need to Dorth's opinion on the intended usage here).&lt;br /&gt;
&lt;br /&gt;
 - To Be Continued -&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13334</id>
		<title>Development/Client2GuiConversion</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13334"/>
				<updated>2009-09-30T21:35:35Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: /* Client 2 Gui Conversion Guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Client 2 Gui Conversion Guide ==&lt;br /&gt;
&lt;br /&gt;
This page is meant as a guide for converting old client 2 gui functionality over to the new system. Some of these steps are meant for clarity and to fit the new coding guidelines and thus can be skipped if one is tight on time. These will be marked as optional, although in all likely cases they should still be performed as long as they don't take much time to do so.&lt;br /&gt;
&lt;br /&gt;
The intention of this conversion is to separate the game logic code from the abstracted gui code while retaining the base functionality and re-using as much code as possible.&lt;br /&gt;
&lt;br /&gt;
Throughout this guide I will be using xfer_funds_dlg.h and .cpp as an example on how to convert the old logic functionality as it is a fairly simple class and will serve this purpose sufficiently.&lt;br /&gt;
&lt;br /&gt;
[Optional] 1. Rename class to camel case and a name more fitting for a logic class rather than a gui class. If the previous name is convoluted it would be preferable to use something more clear.&lt;br /&gt;
&lt;br /&gt;
''E.g. Change the class name from GuiDlgXferFunds to FundsTransferManager.''&lt;br /&gt;
&lt;br /&gt;
2. Remove the inheritance &amp;quot; : public GuiWindow&amp;quot; and any another GuiWindow related inheritance or derivations unless they are central to the class's operation. This includes &amp;quot;virtual bool Load(const std::string &amp;amp;filename_)&amp;quot;, although be sure to check for any important game-logic related code in &amp;quot;virtual bool Load(const std::string &amp;amp;filename_)&amp;quot;, if it's only adding event handlers and storing pointers to gui elements then those can be safely removed, this functionality will be replaced by the signal system in the new gui design. In the case of GuiDlgXferFunds the entire function can be removed, just be sure to keep in mind the list of functions that it assigned event handling to as this may prove useful in the later stages of the conversion.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	FundsTransferManager(irr::gui::IGUIElement* parent_);&lt;br /&gt;
&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
	irr::gui::IGUIEditBox *    m_credits;&lt;br /&gt;
};&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. The constructor for most classes that inherit from GuiWindow will usually take a parent gui element or some other gui-related parameter. These should usually be discarded with certain logic-specific parameters considered on a case by case basis. In the case of GuiDlgXferFunds the constructor parameter can be removed. In the constructor the class will usually attempt to set it's &amp;quot;Name&amp;quot; instance variable and perform other gui-related functions. These should also be considered if they seem central to the logic's operation but in the case of GuiDlgXferFunds we can just remove all of that. This actually removes the need for a constructor in this particular case altogether.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
	irr::gui::IGUIEditBox *    m_credits;&lt;br /&gt;
};&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Old gui-game-logic classes usually keep pointers to relevant elements so they can be easily accessed. The new system will send and receive signals instead and does not need to be aware of the actual gui elements. The instance variables for these can be removed also. Be careful to only remove gui related instance variable, usually marked as being in the &amp;quot;gui::&amp;quot; namespace.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
};&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Convert base functionality to work with the new signals system. This part is hard because it usually involves changing/refactorying other files/classes due to the old code's &amp;quot;immediate mode&amp;quot; nature, where as this new code is &amp;quot;signal&amp;quot; or &amp;quot;event&amp;quot; based. The difference in philosophy is that in the old code an action would be performed during an event and then the change in state would be read and transferred as a message.&lt;br /&gt;
&lt;br /&gt;
For example GuiPropManage creates a GuiDlgXferFunds, waits for the ok button to be clicked and for it to return, validates the result to be EDR_OK and then retrieves the amount in credits the player would like to transfer from GuiDlgXferFunds before sending the message. In the new system GuiDlgXferFunds should create the network message and send it directly upon receiving the signal that the ok button was clicked. GuiDlgXferFunds will either query the value from the edit box element by accessing the element through the name/id of the element OR it will receive the value in the form of a signal sent by the textbox element (Will need to Dorth's opinion on the intended usage here).&lt;br /&gt;
&lt;br /&gt;
 - To Be Continued -&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13333</id>
		<title>Development/Client2GuiConversion</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=Development/Client2GuiConversion&amp;diff=13333"/>
				<updated>2009-09-30T21:31:02Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: New page:  == Client 2 Gui Conversion Guide ==  This page is meant as a guide for converting old client 2 gui functionality over to the new system. Some of these steps are meant for clarity and to f...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Client 2 Gui Conversion Guide ==&lt;br /&gt;
&lt;br /&gt;
This page is meant as a guide for converting old client 2 gui functionality over to the new system. Some of these steps are meant for clarity and to fit the new coding guidelines and thus can be skipped if one is tight on time. These will be marked as optional, although in all likely cases they should still be performed as long as they don't take much time to do so.&lt;br /&gt;
&lt;br /&gt;
The intention of this conversion is to separate the game logic code from the abstracted gui code while retaining the base functionality and re-using as much code as possible.&lt;br /&gt;
&lt;br /&gt;
Throughout this guide I will be using xfer_funds_dlg.h and .cpp as an example on how to convert the old logic functionality as it is a fairly simple class and will serve this purpose sufficiently.&lt;br /&gt;
&lt;br /&gt;
[Optional] 1. Rename class to camel case and a name more fitting for a logic class rather than a gui class. If the previous name is convoluted it would be preferable to use something more clear.&lt;br /&gt;
&lt;br /&gt;
''E.g. Change the class name from GuiDlgXferFunds to FundsTransferManager.''&lt;br /&gt;
&lt;br /&gt;
2. Remove the inheritance &amp;quot; : public GuiWindow&amp;quot; and any another GuiWindow related inheritance or derivations unless they are central to the class's operation. This includes &amp;quot;virtual bool Load(const std::string &amp;amp;filename_)&amp;quot;, although be sure to check for any important game-logic related code in &amp;quot;virtual bool Load(const std::string &amp;amp;filename_)&amp;quot;, if it's only adding event handlers and storing pointers to gui elements then those can be safely removed, this functionality will be replaced by the signal system in the new gui design. In the case of GuiDlgXferFunds the entire function can be removed, just be sure to keep in mind the list of functions that it assigned event handling to as this may prove useful in the later stages of the conversion.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
''class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	FundsTransferManager(irr::gui::IGUIElement* parent_);&lt;br /&gt;
&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
	irr::gui::IGUIEditBox *    m_credits;&lt;br /&gt;
};''&lt;br /&gt;
&lt;br /&gt;
3. The constructor for most classes that inherit from GuiWindow will usually take a parent gui element or some other gui-related parameter. These should usually be discarded with certain logic-specific parameters considered on a case by case basis. In the case of GuiDlgXferFunds the constructor parameter can be removed. In the constructor the class will usually attempt to set it's &amp;quot;Name&amp;quot; instance variable and perform other gui-related functions. These should also be considered if they seem central to the logic's operation but in the case of GuiDlgXferFunds we can just remove all of that. This actually removes the need for a constructor in this particular case altogether.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
''class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
	irr::gui::IGUIEditBox *    m_credits;&lt;br /&gt;
};''&lt;br /&gt;
&lt;br /&gt;
4. Old gui-game-logic classes usually keep pointers to relevant elements so they can be easily accessed. The new system will send and receive signals instead and does not need to be aware of the actual gui elements. The instance variables for these can be removed also. Be careful to only remove gui related instance variable, usually marked as being in the &amp;quot;gui::&amp;quot; namespace.&lt;br /&gt;
&lt;br /&gt;
By now GuiDlgXferFunds's declaration should look like this:&lt;br /&gt;
&lt;br /&gt;
''class FundsTransferManager&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void Clear();&lt;br /&gt;
&lt;br /&gt;
	long64 GetCredits() const;&lt;br /&gt;
};''&lt;br /&gt;
&lt;br /&gt;
5. Convert base functionality to work with the new signals system. This part is hard because it usually involves changing/refactorying other files/classes due to the old code's &amp;quot;immediate mode&amp;quot; nature, where as this new code is &amp;quot;signal&amp;quot; or &amp;quot;event&amp;quot; based. The difference in philosophy is that in the old code an action would be performed during an event and then the change in state would be read and transferred as a message.&lt;br /&gt;
&lt;br /&gt;
For example GuiPropManage creates a GuiDlgXferFunds, waits for the ok button to be clicked and for it to return, validates the result to be EDR_OK and then retrieves the amount in credits the player would like to transfer from GuiDlgXferFunds before sending the message. In the new system GuiDlgXferFunds should create the network message and send it directly upon receiving the signal that the ok button was clicked. GuiDlgXferFunds will either query the value from the edit box element by accessing the element through the name/id of the element OR it will receive the value in the form of a signal sent by the textbox element (Will need to Dorth's opinion on the intended usage here).&lt;br /&gt;
&lt;br /&gt;
 - To Be Continued -&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12155</id>
		<title>BlindSide Log</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12155"/>
				<updated>2009-05-30T06:49:26Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= BlindSide's Star Sonata Development Journal  =&lt;br /&gt;
&lt;br /&gt;
== May 29th  ==&lt;br /&gt;
&lt;br /&gt;
LOG HAS MOVED: http://www.starsonata.com/forum/viewtopic.php?f=9&amp;amp;t=32706&lt;br /&gt;
&lt;br /&gt;
== May 23rd  ==&lt;br /&gt;
&lt;br /&gt;
More work on per-pixel lighting today. For those who know a thing or two about lighting mathematics, I scrapped the traditional attenuation formula for a simple (1.0 - distance / radius), works much better now. I also had a play around with a rim light (Originally intended for planet atmospheres but I think it tends to look nice on ships too.). A rim light is the fading white outline you see in the following image:&lt;br /&gt;
&lt;br /&gt;
[[Image:RimLight.png]]&lt;br /&gt;
&lt;br /&gt;
Believe it or not, there's still no bump mapping in that shot. Then again, I reckon that bumpmapping will have a more noticeable effect on things like planets and bigger ships. I'll hack that in and report back.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;** Some Time Passes **&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OK! Bump maps are in!&lt;br /&gt;
&lt;br /&gt;
Here is a comparison using a shrimp (Top shows bumpmapping, bottom no bumpmapping):&lt;br /&gt;
&lt;br /&gt;
[[Image:ShipBump.jpg]]&lt;br /&gt;
&lt;br /&gt;
And a planet (Top shows bumpmapping again):&lt;br /&gt;
&lt;br /&gt;
[[Image:PlanetBump.jpg]]&lt;br /&gt;
&lt;br /&gt;
These are just preliminary results of course, I plan to add specular reflections to oceans on planets and lots of other goodies. See you next time on BSDL! (Yes I think an acronym sounds cooler...)&lt;br /&gt;
&lt;br /&gt;
== May 21st  ==&lt;br /&gt;
&lt;br /&gt;
Today I started on per-pixel lighting. I am supposed to go ahead and implement bumpmapping, rim lighting, and whatever effects I feel like stuffing in the shader to make it look pretty.&lt;br /&gt;
&lt;br /&gt;
Now, what is per-pixel lighting? Let's start with a brief explanation:&lt;br /&gt;
&lt;br /&gt;
In legacy graphics, lighting is calculated on a per-vertex level, for example, for your standard n dot l (normal dot product light direction) style lighting, it would be calculated for each vertex, based on the vertex normal, and then interpolated across the triangle. It typically produces ugly triangle shaped artifacts in under tessellated models (Models with a small amount of triangles).&lt;br /&gt;
&lt;br /&gt;
Something like this (Images thanks to LightHouse3d):&lt;br /&gt;
&lt;br /&gt;
[[Image:PointGL.gif]]&lt;br /&gt;
&lt;br /&gt;
Per-pixel on the other hand, performs the operation on every pixel, without the need to interpolate the final result across the triangle. It's typically more computationally expensive, but the results speak for themselves:&lt;br /&gt;
&lt;br /&gt;
[[Image:PointPix.gif]]&lt;br /&gt;
&lt;br /&gt;
Here is a side by side comparison of just ordinary lighting applied to a Zebu (No bumpmaps). The one on the left is per-pixel and the one on the right is fixed function per-vertex lighting. Particularly near the cockpit you can make out how the per-pixel lighting approach produces a more distinct result, where as the lighting on the per-vertex version looks rather vague:&lt;br /&gt;
&lt;br /&gt;
[[Image:ZebuPerPix.jpg]]&lt;br /&gt;
&lt;br /&gt;
Please note that the per-pixel version is using slightly different material settings and therefore it is slightly darker.&lt;br /&gt;
&lt;br /&gt;
Also, earlier in the forums I posted up a screenshot of the pax frigate. I think this is one of the ships that benefit the most in particular from per-pixel lighting. With the same viewing angle and position, this is the old shot:&lt;br /&gt;
&lt;br /&gt;
[[Image:OldPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
And this is the new (Note this was taken on Very High so it has anti-aliasing applied too unlike the old shot):&lt;br /&gt;
&lt;br /&gt;
[[Image:NewPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
That's all for today, folks.&lt;br /&gt;
&lt;br /&gt;
== May 19th  ==&lt;br /&gt;
&lt;br /&gt;
Added quite a few things since the last post, namely lightning style lasers. Jade Ion is now a combination of animated lightning and beam rather than a static custom image. I would post a screenshot but it won't do it justice, better to see it moving. Some lightning style lasers such as Really Big Laser are using pure lightning, and stuff like shield transference still use a static core texture (Screenshot in last post). &lt;br /&gt;
&lt;br /&gt;
On the lasers side I've also added some particles that emit from the firing point to create a sort of muzzle effect. Will need to test this with really big lasers (I don't specifically refer to Really Big Laser here). &lt;br /&gt;
&lt;br /&gt;
For explosions, I enhanced the look by using a seperate particle texture (And system), and made them only refract on ships. Sparklers take the sob size into account now, when available (Had to modify husk and spacebase to supply sizes to sparklers, as this was only implemented for explosions.). &lt;br /&gt;
&lt;br /&gt;
Ok that's me for today, catch you next time on BlindSide Development Log!&amp;amp;nbsp;:P &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''I think we should open this log to everyone BS, what do you think?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide's response] - ''BlindSide's Star Sonata Development log grand opening! I like the sound of that. (I also like the sound of my own voice, lol)'' &lt;br /&gt;
&lt;br /&gt;
== May 17th  ==&lt;br /&gt;
&lt;br /&gt;
I spent more time fixing wormholes and a few other things today. I made a small video showing the two seperate parts of a wormhole, they are combined in the final product: http://irrlichtirc.g0dsoft.com/BlindSide/wh.wmv &lt;br /&gt;
&lt;br /&gt;
Anyway enough about that, I added a cool bulge to lasers: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserBulge.jpg]] &lt;br /&gt;
&lt;br /&gt;
Particle effects: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserParticle.jpg]] &lt;br /&gt;
&lt;br /&gt;
Custom core textures: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserYingYang.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== May 16th  ==&lt;br /&gt;
&lt;br /&gt;
Something was annoying me about the last screenshot, it's the hard end that the lasers have, it looks very unprofessional (Like the C1 lasers&amp;amp;nbsp;:P, not baggin' on C1 or anything). I scratched my head for some time on how to get rid of this without resorting to to textures (Which means scrapping the whole geometry idea and starting from scratch). Solution: More geometry! I think I am getting better at writing meshes by hand. Mind you I only added 3 vertices, but the end result speaks for itself: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev7.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now to add some more variation as promised! &lt;br /&gt;
&lt;br /&gt;
== May 14th  ==&lt;br /&gt;
&lt;br /&gt;
Lasers of course should have an overly bright bit in the center, so with some more hacking I got this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev6.jpg]] &lt;br /&gt;
&lt;br /&gt;
Note that I don't use any textures for this, the laser is purely geometry and the color variation is from blending the vertex colors. This should in theory prove more efficient than a texture based solution, and more importantly it allows us to set any arbitary colors we want without extra hassle. &lt;br /&gt;
&lt;br /&gt;
== May 13th  ==&lt;br /&gt;
&lt;br /&gt;
Finally it is lasers time! Lasers are certainly one of the more interesting graphics elements. Few methods/variations arise: &lt;br /&gt;
&lt;br /&gt;
 - Criss cross 2 billboards to create a beam effect, fairly simple. &lt;br /&gt;
&lt;br /&gt;
No textures are needed here as we can just 2 more vertices and interpolate the vertex color from black at the edges to whatever the color is in the center. &lt;br /&gt;
&lt;br /&gt;
 - I could place one or two of those billboard volume light scene nodes on &lt;br /&gt;
the beam to create a bit more variation, &lt;br /&gt;
&lt;br /&gt;
I'm always meaning to use them somewhere but haven't found the place. &lt;br /&gt;
&lt;br /&gt;
 - A better idea would be to just use an elongated sphere and only render&lt;br /&gt;
 the bumps/animations on the lasers in the glow pass. &lt;br /&gt;
&lt;br /&gt;
This should create a nice effect, I will probably try this method first. &lt;br /&gt;
&lt;br /&gt;
 - For wide area laser/tractory type things a cone with scrolling textures &lt;br /&gt;
(Via texture matrices would be appropriate). &lt;br /&gt;
&lt;br /&gt;
I will probably just use whatever texture is provided with C1 and scroll that along the 3 dimensional cone, should come out nice. &lt;br /&gt;
&lt;br /&gt;
Well I am off to implement them and will hopefully have some screenshots in a few hours! &lt;br /&gt;
&lt;br /&gt;
(Some time passes) &lt;br /&gt;
&lt;br /&gt;
Ok, first of all, lets get acquainted with the Laser space objects. Process the start and endpoints and draw a simple line for debug output: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev1.jpg]] &lt;br /&gt;
&lt;br /&gt;
Oh dear that does not look right. Oh yes! The laser is using relative coordinates. Subtract that laser's position from the endpoint: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev2.jpg]] &lt;br /&gt;
&lt;br /&gt;
That's more like it! &lt;br /&gt;
&lt;br /&gt;
Now let's make it look more like a laser. After a bit of magic (And a complete re-write of an already available laser scene node for Irrlicht), we get something like this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev3.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now that's starting to look more like a laser! Let's try some glow and see what we get: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev4.jpg]] &lt;br /&gt;
&lt;br /&gt;
OK, maybe that's a little too much glow! Let's reduce the laser's radius when applying glow: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev5.jpg]] &lt;br /&gt;
&lt;br /&gt;
It's getting better! Next time we'll try adding a green light to the front of the ship when it fires a laser (Other surprises are in store!). That's all for today, stay tuned. &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''Starting to look very nice. Any way to add a bit of variation up and down the beam?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide response] - ''Thanks for your comment pip! The lasers will indeed get some variation once the basic look is perfected.''&lt;br /&gt;
&lt;br /&gt;
== May 12th  ==&lt;br /&gt;
&lt;br /&gt;
I've been improving the background generation on/off. On my Phenom 9950 system (2.6 ghz, Only using one core): &lt;br /&gt;
&lt;br /&gt;
 - Low/Medium settings take 60 milliseconds to generate the background nebula.&lt;br /&gt;
 - High+ settings take ~400 milliseconds to generate the background nebula.&lt;br /&gt;
&lt;br /&gt;
I may consider moving this to the gpu for better performance, as high settings systems will undoubtedly support this functionality (I would use the same code that creates the animated patterns on the suns, so it should be pretty damn fast). We'll see. &lt;br /&gt;
&lt;br /&gt;
Currently the background is placed on a flat billboard but I am considering moving this to a hemisphere/quarter-sphere(?) to create a more 3 dimensional feeling. &lt;br /&gt;
&lt;br /&gt;
[Smiley Comment] ''I assume the background will be the same each time you visit the same galaxy, correct? Its just generating the SAME nebula based on parameters set at universe creation, correct? I think the galaxies should keep their &amp;quot;look&amp;quot; from visit to visit.'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide reply] ''Thanks for the comment Smiley! That is correct, the nebula generator currently uses the galaxy id as the seed for the generation, so visiting the same galaxy twice would give you the same look and colors. '' &lt;br /&gt;
&lt;br /&gt;
[[Category:Client_2_Dev]]&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12154</id>
		<title>BlindSide Log</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12154"/>
				<updated>2009-05-30T06:49:07Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= BlindSide's Star Sonata Development Journal  =&lt;br /&gt;
&lt;br /&gt;
== May 29th  ==&lt;br /&gt;
&lt;br /&gt;
LOG HAS MOVED: [http://www.starsonata.com/forum/viewtopic.php?f=9&amp;amp;t=32706]&lt;br /&gt;
&lt;br /&gt;
== May 23rd  ==&lt;br /&gt;
&lt;br /&gt;
More work on per-pixel lighting today. For those who know a thing or two about lighting mathematics, I scrapped the traditional attenuation formula for a simple (1.0 - distance / radius), works much better now. I also had a play around with a rim light (Originally intended for planet atmospheres but I think it tends to look nice on ships too.). A rim light is the fading white outline you see in the following image:&lt;br /&gt;
&lt;br /&gt;
[[Image:RimLight.png]]&lt;br /&gt;
&lt;br /&gt;
Believe it or not, there's still no bump mapping in that shot. Then again, I reckon that bumpmapping will have a more noticeable effect on things like planets and bigger ships. I'll hack that in and report back.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;** Some Time Passes **&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OK! Bump maps are in!&lt;br /&gt;
&lt;br /&gt;
Here is a comparison using a shrimp (Top shows bumpmapping, bottom no bumpmapping):&lt;br /&gt;
&lt;br /&gt;
[[Image:ShipBump.jpg]]&lt;br /&gt;
&lt;br /&gt;
And a planet (Top shows bumpmapping again):&lt;br /&gt;
&lt;br /&gt;
[[Image:PlanetBump.jpg]]&lt;br /&gt;
&lt;br /&gt;
These are just preliminary results of course, I plan to add specular reflections to oceans on planets and lots of other goodies. See you next time on BSDL! (Yes I think an acronym sounds cooler...)&lt;br /&gt;
&lt;br /&gt;
== May 21st  ==&lt;br /&gt;
&lt;br /&gt;
Today I started on per-pixel lighting. I am supposed to go ahead and implement bumpmapping, rim lighting, and whatever effects I feel like stuffing in the shader to make it look pretty.&lt;br /&gt;
&lt;br /&gt;
Now, what is per-pixel lighting? Let's start with a brief explanation:&lt;br /&gt;
&lt;br /&gt;
In legacy graphics, lighting is calculated on a per-vertex level, for example, for your standard n dot l (normal dot product light direction) style lighting, it would be calculated for each vertex, based on the vertex normal, and then interpolated across the triangle. It typically produces ugly triangle shaped artifacts in under tessellated models (Models with a small amount of triangles).&lt;br /&gt;
&lt;br /&gt;
Something like this (Images thanks to LightHouse3d):&lt;br /&gt;
&lt;br /&gt;
[[Image:PointGL.gif]]&lt;br /&gt;
&lt;br /&gt;
Per-pixel on the other hand, performs the operation on every pixel, without the need to interpolate the final result across the triangle. It's typically more computationally expensive, but the results speak for themselves:&lt;br /&gt;
&lt;br /&gt;
[[Image:PointPix.gif]]&lt;br /&gt;
&lt;br /&gt;
Here is a side by side comparison of just ordinary lighting applied to a Zebu (No bumpmaps). The one on the left is per-pixel and the one on the right is fixed function per-vertex lighting. Particularly near the cockpit you can make out how the per-pixel lighting approach produces a more distinct result, where as the lighting on the per-vertex version looks rather vague:&lt;br /&gt;
&lt;br /&gt;
[[Image:ZebuPerPix.jpg]]&lt;br /&gt;
&lt;br /&gt;
Please note that the per-pixel version is using slightly different material settings and therefore it is slightly darker.&lt;br /&gt;
&lt;br /&gt;
Also, earlier in the forums I posted up a screenshot of the pax frigate. I think this is one of the ships that benefit the most in particular from per-pixel lighting. With the same viewing angle and position, this is the old shot:&lt;br /&gt;
&lt;br /&gt;
[[Image:OldPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
And this is the new (Note this was taken on Very High so it has anti-aliasing applied too unlike the old shot):&lt;br /&gt;
&lt;br /&gt;
[[Image:NewPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
That's all for today, folks.&lt;br /&gt;
&lt;br /&gt;
== May 19th  ==&lt;br /&gt;
&lt;br /&gt;
Added quite a few things since the last post, namely lightning style lasers. Jade Ion is now a combination of animated lightning and beam rather than a static custom image. I would post a screenshot but it won't do it justice, better to see it moving. Some lightning style lasers such as Really Big Laser are using pure lightning, and stuff like shield transference still use a static core texture (Screenshot in last post). &lt;br /&gt;
&lt;br /&gt;
On the lasers side I've also added some particles that emit from the firing point to create a sort of muzzle effect. Will need to test this with really big lasers (I don't specifically refer to Really Big Laser here). &lt;br /&gt;
&lt;br /&gt;
For explosions, I enhanced the look by using a seperate particle texture (And system), and made them only refract on ships. Sparklers take the sob size into account now, when available (Had to modify husk and spacebase to supply sizes to sparklers, as this was only implemented for explosions.). &lt;br /&gt;
&lt;br /&gt;
Ok that's me for today, catch you next time on BlindSide Development Log!&amp;amp;nbsp;:P &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''I think we should open this log to everyone BS, what do you think?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide's response] - ''BlindSide's Star Sonata Development log grand opening! I like the sound of that. (I also like the sound of my own voice, lol)'' &lt;br /&gt;
&lt;br /&gt;
== May 17th  ==&lt;br /&gt;
&lt;br /&gt;
I spent more time fixing wormholes and a few other things today. I made a small video showing the two seperate parts of a wormhole, they are combined in the final product: http://irrlichtirc.g0dsoft.com/BlindSide/wh.wmv &lt;br /&gt;
&lt;br /&gt;
Anyway enough about that, I added a cool bulge to lasers: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserBulge.jpg]] &lt;br /&gt;
&lt;br /&gt;
Particle effects: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserParticle.jpg]] &lt;br /&gt;
&lt;br /&gt;
Custom core textures: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserYingYang.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== May 16th  ==&lt;br /&gt;
&lt;br /&gt;
Something was annoying me about the last screenshot, it's the hard end that the lasers have, it looks very unprofessional (Like the C1 lasers&amp;amp;nbsp;:P, not baggin' on C1 or anything). I scratched my head for some time on how to get rid of this without resorting to to textures (Which means scrapping the whole geometry idea and starting from scratch). Solution: More geometry! I think I am getting better at writing meshes by hand. Mind you I only added 3 vertices, but the end result speaks for itself: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev7.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now to add some more variation as promised! &lt;br /&gt;
&lt;br /&gt;
== May 14th  ==&lt;br /&gt;
&lt;br /&gt;
Lasers of course should have an overly bright bit in the center, so with some more hacking I got this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev6.jpg]] &lt;br /&gt;
&lt;br /&gt;
Note that I don't use any textures for this, the laser is purely geometry and the color variation is from blending the vertex colors. This should in theory prove more efficient than a texture based solution, and more importantly it allows us to set any arbitary colors we want without extra hassle. &lt;br /&gt;
&lt;br /&gt;
== May 13th  ==&lt;br /&gt;
&lt;br /&gt;
Finally it is lasers time! Lasers are certainly one of the more interesting graphics elements. Few methods/variations arise: &lt;br /&gt;
&lt;br /&gt;
 - Criss cross 2 billboards to create a beam effect, fairly simple. &lt;br /&gt;
&lt;br /&gt;
No textures are needed here as we can just 2 more vertices and interpolate the vertex color from black at the edges to whatever the color is in the center. &lt;br /&gt;
&lt;br /&gt;
 - I could place one or two of those billboard volume light scene nodes on &lt;br /&gt;
the beam to create a bit more variation, &lt;br /&gt;
&lt;br /&gt;
I'm always meaning to use them somewhere but haven't found the place. &lt;br /&gt;
&lt;br /&gt;
 - A better idea would be to just use an elongated sphere and only render&lt;br /&gt;
 the bumps/animations on the lasers in the glow pass. &lt;br /&gt;
&lt;br /&gt;
This should create a nice effect, I will probably try this method first. &lt;br /&gt;
&lt;br /&gt;
 - For wide area laser/tractory type things a cone with scrolling textures &lt;br /&gt;
(Via texture matrices would be appropriate). &lt;br /&gt;
&lt;br /&gt;
I will probably just use whatever texture is provided with C1 and scroll that along the 3 dimensional cone, should come out nice. &lt;br /&gt;
&lt;br /&gt;
Well I am off to implement them and will hopefully have some screenshots in a few hours! &lt;br /&gt;
&lt;br /&gt;
(Some time passes) &lt;br /&gt;
&lt;br /&gt;
Ok, first of all, lets get acquainted with the Laser space objects. Process the start and endpoints and draw a simple line for debug output: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev1.jpg]] &lt;br /&gt;
&lt;br /&gt;
Oh dear that does not look right. Oh yes! The laser is using relative coordinates. Subtract that laser's position from the endpoint: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev2.jpg]] &lt;br /&gt;
&lt;br /&gt;
That's more like it! &lt;br /&gt;
&lt;br /&gt;
Now let's make it look more like a laser. After a bit of magic (And a complete re-write of an already available laser scene node for Irrlicht), we get something like this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev3.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now that's starting to look more like a laser! Let's try some glow and see what we get: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev4.jpg]] &lt;br /&gt;
&lt;br /&gt;
OK, maybe that's a little too much glow! Let's reduce the laser's radius when applying glow: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev5.jpg]] &lt;br /&gt;
&lt;br /&gt;
It's getting better! Next time we'll try adding a green light to the front of the ship when it fires a laser (Other surprises are in store!). That's all for today, stay tuned. &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''Starting to look very nice. Any way to add a bit of variation up and down the beam?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide response] - ''Thanks for your comment pip! The lasers will indeed get some variation once the basic look is perfected.''&lt;br /&gt;
&lt;br /&gt;
== May 12th  ==&lt;br /&gt;
&lt;br /&gt;
I've been improving the background generation on/off. On my Phenom 9950 system (2.6 ghz, Only using one core): &lt;br /&gt;
&lt;br /&gt;
 - Low/Medium settings take 60 milliseconds to generate the background nebula.&lt;br /&gt;
 - High+ settings take ~400 milliseconds to generate the background nebula.&lt;br /&gt;
&lt;br /&gt;
I may consider moving this to the gpu for better performance, as high settings systems will undoubtedly support this functionality (I would use the same code that creates the animated patterns on the suns, so it should be pretty damn fast). We'll see. &lt;br /&gt;
&lt;br /&gt;
Currently the background is placed on a flat billboard but I am considering moving this to a hemisphere/quarter-sphere(?) to create a more 3 dimensional feeling. &lt;br /&gt;
&lt;br /&gt;
[Smiley Comment] ''I assume the background will be the same each time you visit the same galaxy, correct? Its just generating the SAME nebula based on parameters set at universe creation, correct? I think the galaxies should keep their &amp;quot;look&amp;quot; from visit to visit.'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide reply] ''Thanks for the comment Smiley! That is correct, the nebula generator currently uses the galaxy id as the seed for the generation, so visiting the same galaxy twice would give you the same look and colors. '' &lt;br /&gt;
&lt;br /&gt;
[[Category:Client_2_Dev]]&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=File:PlanetBump.jpg&amp;diff=12084</id>
		<title>File:PlanetBump.jpg</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=File:PlanetBump.jpg&amp;diff=12084"/>
				<updated>2009-05-24T08:17:11Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=File:ShipBump.jpg&amp;diff=12083</id>
		<title>File:ShipBump.jpg</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=File:ShipBump.jpg&amp;diff=12083"/>
				<updated>2009-05-24T08:17:06Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12082</id>
		<title>BlindSide Log</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12082"/>
				<updated>2009-05-24T08:16:55Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: /* May 23rd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= BlindSide's Star Sonata Development Journal  =&lt;br /&gt;
&lt;br /&gt;
== May 23rd  ==&lt;br /&gt;
&lt;br /&gt;
More work on per-pixel lighting today. For those who know a thing or two about lighting mathematics, I scrapped the traditional attenuation formula for a simple (1.0 - distance / radius), works much better now. I also had a play around with a rim light (Originally intended for planet atmospheres but I think it tends to look nice on ships too.). A rim light is the fading white outline you see in the following image:&lt;br /&gt;
&lt;br /&gt;
[[Image:RimLight.png]]&lt;br /&gt;
&lt;br /&gt;
Believe it or not, there's still no bump mapping in that shot. Then again, I reckon that bumpmapping will have a more noticeable effect on things like planets and bigger ships. I'll hack that in and report back.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;** Some Time Passes **&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OK! Bump maps are in!&lt;br /&gt;
&lt;br /&gt;
Here is a comparison using a shrimp (Top shows bumpmapping, bottom no bumpmapping):&lt;br /&gt;
&lt;br /&gt;
[[Image:ShipBump.jpg]]&lt;br /&gt;
&lt;br /&gt;
And a planet (Top shows bumpmapping again):&lt;br /&gt;
&lt;br /&gt;
[[Image:PlanetBump.jpg]]&lt;br /&gt;
&lt;br /&gt;
These are just preliminary results of course, I plan to add specular reflections to oceans on planets and lots of other goodies. See you next time on BSDL! (Yes I think an acronym sounds cooler...)&lt;br /&gt;
&lt;br /&gt;
== May 21st  ==&lt;br /&gt;
&lt;br /&gt;
Today I started on per-pixel lighting. I am supposed to go ahead and implement bumpmapping, rim lighting, and whatever effects I feel like stuffing in the shader to make it look pretty.&lt;br /&gt;
&lt;br /&gt;
Now, what is per-pixel lighting? Let's start with a brief explanation:&lt;br /&gt;
&lt;br /&gt;
In legacy graphics, lighting is calculated on a per-vertex level, for example, for your standard n dot l (normal dot product light direction) style lighting, it would be calculated for each vertex, based on the vertex normal, and then interpolated across the triangle. It typically produces ugly triangle shaped artifacts in under tessellated models (Models with a small amount of triangles).&lt;br /&gt;
&lt;br /&gt;
Something like this (Images thanks to LightHouse3d):&lt;br /&gt;
&lt;br /&gt;
[[Image:PointGL.gif]]&lt;br /&gt;
&lt;br /&gt;
Per-pixel on the other hand, performs the operation on every pixel, without the need to interpolate the final result across the triangle. It's typically more computationally expensive, but the results speak for themselves:&lt;br /&gt;
&lt;br /&gt;
[[Image:PointPix.gif]]&lt;br /&gt;
&lt;br /&gt;
Here is a side by side comparison of just ordinary lighting applied to a Zebu (No bumpmaps). The one on the left is per-pixel and the one on the right is fixed function per-vertex lighting. Particularly near the cockpit you can make out how the per-pixel lighting approach produces a more distinct result, where as the lighting on the per-vertex version looks rather vague:&lt;br /&gt;
&lt;br /&gt;
[[Image:ZebuPerPix.jpg]]&lt;br /&gt;
&lt;br /&gt;
Please note that the per-pixel version is using slightly different material settings and therefore it is slightly darker.&lt;br /&gt;
&lt;br /&gt;
Also, earlier in the forums I posted up a screenshot of the pax frigate. I think this is one of the ships that benefit the most in particular from per-pixel lighting. With the same viewing angle and position, this is the old shot:&lt;br /&gt;
&lt;br /&gt;
[[Image:OldPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
And this is the new (Note this was taken on Very High so it has anti-aliasing applied too unlike the old shot):&lt;br /&gt;
&lt;br /&gt;
[[Image:NewPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
That's all for today, folks.&lt;br /&gt;
&lt;br /&gt;
== May 19th  ==&lt;br /&gt;
&lt;br /&gt;
Added quite a few things since the last post, namely lightning style lasers. Jade Ion is now a combination of animated lightning and beam rather than a static custom image. I would post a screenshot but it won't do it justice, better to see it moving. Some lightning style lasers such as Really Big Laser are using pure lightning, and stuff like shield transference still use a static core texture (Screenshot in last post). &lt;br /&gt;
&lt;br /&gt;
On the lasers side I've also added some particles that emit from the firing point to create a sort of muzzle effect. Will need to test this with really big lasers (I don't specifically refer to Really Big Laser here). &lt;br /&gt;
&lt;br /&gt;
For explosions, I enhanced the look by using a seperate particle texture (And system), and made them only refract on ships. Sparklers take the sob size into account now, when available (Had to modify husk and spacebase to supply sizes to sparklers, as this was only implemented for explosions.). &lt;br /&gt;
&lt;br /&gt;
Ok that's me for today, catch you next time on BlindSide Development Log!&amp;amp;nbsp;:P &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''I think we should open this log to everyone BS, what do you think?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide's response] - ''BlindSide's Star Sonata Development log grand opening! I like the sound of that. (I also like the sound of my own voice, lol)'' &lt;br /&gt;
&lt;br /&gt;
== May 17th  ==&lt;br /&gt;
&lt;br /&gt;
I spent more time fixing wormholes and a few other things today. I made a small video showing the two seperate parts of a wormhole, they are combined in the final product: http://irrlichtirc.g0dsoft.com/BlindSide/wh.wmv &lt;br /&gt;
&lt;br /&gt;
Anyway enough about that, I added a cool bulge to lasers: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserBulge.jpg]] &lt;br /&gt;
&lt;br /&gt;
Particle effects: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserParticle.jpg]] &lt;br /&gt;
&lt;br /&gt;
Custom core textures: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserYingYang.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== May 16th  ==&lt;br /&gt;
&lt;br /&gt;
Something was annoying me about the last screenshot, it's the hard end that the lasers have, it looks very unprofessional (Like the C1 lasers&amp;amp;nbsp;:P, not baggin' on C1 or anything). I scratched my head for some time on how to get rid of this without resorting to to textures (Which means scrapping the whole geometry idea and starting from scratch). Solution: More geometry! I think I am getting better at writing meshes by hand. Mind you I only added 3 vertices, but the end result speaks for itself: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev7.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now to add some more variation as promised! &lt;br /&gt;
&lt;br /&gt;
== May 14th  ==&lt;br /&gt;
&lt;br /&gt;
Lasers of course should have an overly bright bit in the center, so with some more hacking I got this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev6.jpg]] &lt;br /&gt;
&lt;br /&gt;
Note that I don't use any textures for this, the laser is purely geometry and the color variation is from blending the vertex colors. This should in theory prove more efficient than a texture based solution, and more importantly it allows us to set any arbitary colors we want without extra hassle. &lt;br /&gt;
&lt;br /&gt;
== May 13th  ==&lt;br /&gt;
&lt;br /&gt;
Finally it is lasers time! Lasers are certainly one of the more interesting graphics elements. Few methods/variations arise: &lt;br /&gt;
&lt;br /&gt;
 - Criss cross 2 billboards to create a beam effect, fairly simple. &lt;br /&gt;
&lt;br /&gt;
No textures are needed here as we can just 2 more vertices and interpolate the vertex color from black at the edges to whatever the color is in the center. &lt;br /&gt;
&lt;br /&gt;
 - I could place one or two of those billboard volume light scene nodes on &lt;br /&gt;
the beam to create a bit more variation, &lt;br /&gt;
&lt;br /&gt;
I'm always meaning to use them somewhere but haven't found the place. &lt;br /&gt;
&lt;br /&gt;
 - A better idea would be to just use an elongated sphere and only render&lt;br /&gt;
 the bumps/animations on the lasers in the glow pass. &lt;br /&gt;
&lt;br /&gt;
This should create a nice effect, I will probably try this method first. &lt;br /&gt;
&lt;br /&gt;
 - For wide area laser/tractory type things a cone with scrolling textures &lt;br /&gt;
(Via texture matrices would be appropriate). &lt;br /&gt;
&lt;br /&gt;
I will probably just use whatever texture is provided with C1 and scroll that along the 3 dimensional cone, should come out nice. &lt;br /&gt;
&lt;br /&gt;
Well I am off to implement them and will hopefully have some screenshots in a few hours! &lt;br /&gt;
&lt;br /&gt;
(Some time passes) &lt;br /&gt;
&lt;br /&gt;
Ok, first of all, lets get acquainted with the Laser space objects. Process the start and endpoints and draw a simple line for debug output: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev1.jpg]] &lt;br /&gt;
&lt;br /&gt;
Oh dear that does not look right. Oh yes! The laser is using relative coordinates. Subtract that laser's position from the endpoint: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev2.jpg]] &lt;br /&gt;
&lt;br /&gt;
That's more like it! &lt;br /&gt;
&lt;br /&gt;
Now let's make it look more like a laser. After a bit of magic (And a complete re-write of an already available laser scene node for Irrlicht), we get something like this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev3.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now that's starting to look more like a laser! Let's try some glow and see what we get: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev4.jpg]] &lt;br /&gt;
&lt;br /&gt;
OK, maybe that's a little too much glow! Let's reduce the laser's radius when applying glow: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev5.jpg]] &lt;br /&gt;
&lt;br /&gt;
It's getting better! Next time we'll try adding a green light to the front of the ship when it fires a laser (Other surprises are in store!). That's all for today, stay tuned. &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''Starting to look very nice. Any way to add a bit of variation up and down the beam?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide response] - ''Thanks for your comment pip! The lasers will indeed get some variation once the basic look is perfected.''&lt;br /&gt;
&lt;br /&gt;
== May 12th  ==&lt;br /&gt;
&lt;br /&gt;
I've been improving the background generation on/off. On my Phenom 9950 system (2.6 ghz, Only using one core): &lt;br /&gt;
&lt;br /&gt;
 - Low/Medium settings take 60 milliseconds to generate the background nebula.&lt;br /&gt;
 - High+ settings take ~400 milliseconds to generate the background nebula.&lt;br /&gt;
&lt;br /&gt;
I may consider moving this to the gpu for better performance, as high settings systems will undoubtedly support this functionality (I would use the same code that creates the animated patterns on the suns, so it should be pretty damn fast). We'll see. &lt;br /&gt;
&lt;br /&gt;
Currently the background is placed on a flat billboard but I am considering moving this to a hemisphere/quarter-sphere(?) to create a more 3 dimensional feeling. &lt;br /&gt;
&lt;br /&gt;
[Smiley Comment] ''I assume the background will be the same each time you visit the same galaxy, correct? Its just generating the SAME nebula based on parameters set at universe creation, correct? I think the galaxies should keep their &amp;quot;look&amp;quot; from visit to visit.'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide reply] ''Thanks for the comment Smiley! That is correct, the nebula generator currently uses the galaxy id as the seed for the generation, so visiting the same galaxy twice would give you the same look and colors. '' &lt;br /&gt;
&lt;br /&gt;
[[Category:Client_2_Dev]]&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12081</id>
		<title>BlindSide Log</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12081"/>
				<updated>2009-05-24T08:16:37Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: /* May 23rd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= BlindSide's Star Sonata Development Journal  =&lt;br /&gt;
&lt;br /&gt;
== May 23rd  ==&lt;br /&gt;
&lt;br /&gt;
More work on per-pixel lighting today. For those who know a thing or two about lighting mathematics, I scrapped the traditional attenuation formula for a simple (1.0 - distance / radius), works much better now. I also had a play around with a rim light (Originally intended for planet atmospheres but I think it tends to look nice on ships too.). A rim light is the fading white outline you see in the following image:&lt;br /&gt;
&lt;br /&gt;
[[Image:RimLight.png]]&lt;br /&gt;
&lt;br /&gt;
Believe it or not, there's still no bump mapping in that shot. Then again, I reckon that bumpmapping will have a more noticeable effect on things like planets and bigger ships. I'll hack that in and report back.&lt;br /&gt;
&lt;br /&gt;
** Time Passes **&lt;br /&gt;
&lt;br /&gt;
OK! Bump maps are in!&lt;br /&gt;
&lt;br /&gt;
Here is a comparison using a shrimp (Top shows bumpmapping, bottom no bumpmapping):&lt;br /&gt;
&lt;br /&gt;
[[Image:ShipBump.jpg]]&lt;br /&gt;
&lt;br /&gt;
And a planet (Top shows bumpmapping again):&lt;br /&gt;
&lt;br /&gt;
[[Image:PlanetBump.jpg]]&lt;br /&gt;
&lt;br /&gt;
These are just preliminary results of course, I plan to add specular reflections to oceans on planets and lots of other goodies. See you next time on BSDL! (Yes I think an acronym sounds cooler...)&lt;br /&gt;
&lt;br /&gt;
== May 21st  ==&lt;br /&gt;
&lt;br /&gt;
Today I started on per-pixel lighting. I am supposed to go ahead and implement bumpmapping, rim lighting, and whatever effects I feel like stuffing in the shader to make it look pretty.&lt;br /&gt;
&lt;br /&gt;
Now, what is per-pixel lighting? Let's start with a brief explanation:&lt;br /&gt;
&lt;br /&gt;
In legacy graphics, lighting is calculated on a per-vertex level, for example, for your standard n dot l (normal dot product light direction) style lighting, it would be calculated for each vertex, based on the vertex normal, and then interpolated across the triangle. It typically produces ugly triangle shaped artifacts in under tessellated models (Models with a small amount of triangles).&lt;br /&gt;
&lt;br /&gt;
Something like this (Images thanks to LightHouse3d):&lt;br /&gt;
&lt;br /&gt;
[[Image:PointGL.gif]]&lt;br /&gt;
&lt;br /&gt;
Per-pixel on the other hand, performs the operation on every pixel, without the need to interpolate the final result across the triangle. It's typically more computationally expensive, but the results speak for themselves:&lt;br /&gt;
&lt;br /&gt;
[[Image:PointPix.gif]]&lt;br /&gt;
&lt;br /&gt;
Here is a side by side comparison of just ordinary lighting applied to a Zebu (No bumpmaps). The one on the left is per-pixel and the one on the right is fixed function per-vertex lighting. Particularly near the cockpit you can make out how the per-pixel lighting approach produces a more distinct result, where as the lighting on the per-vertex version looks rather vague:&lt;br /&gt;
&lt;br /&gt;
[[Image:ZebuPerPix.jpg]]&lt;br /&gt;
&lt;br /&gt;
Please note that the per-pixel version is using slightly different material settings and therefore it is slightly darker.&lt;br /&gt;
&lt;br /&gt;
Also, earlier in the forums I posted up a screenshot of the pax frigate. I think this is one of the ships that benefit the most in particular from per-pixel lighting. With the same viewing angle and position, this is the old shot:&lt;br /&gt;
&lt;br /&gt;
[[Image:OldPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
And this is the new (Note this was taken on Very High so it has anti-aliasing applied too unlike the old shot):&lt;br /&gt;
&lt;br /&gt;
[[Image:NewPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
That's all for today, folks.&lt;br /&gt;
&lt;br /&gt;
== May 19th  ==&lt;br /&gt;
&lt;br /&gt;
Added quite a few things since the last post, namely lightning style lasers. Jade Ion is now a combination of animated lightning and beam rather than a static custom image. I would post a screenshot but it won't do it justice, better to see it moving. Some lightning style lasers such as Really Big Laser are using pure lightning, and stuff like shield transference still use a static core texture (Screenshot in last post). &lt;br /&gt;
&lt;br /&gt;
On the lasers side I've also added some particles that emit from the firing point to create a sort of muzzle effect. Will need to test this with really big lasers (I don't specifically refer to Really Big Laser here). &lt;br /&gt;
&lt;br /&gt;
For explosions, I enhanced the look by using a seperate particle texture (And system), and made them only refract on ships. Sparklers take the sob size into account now, when available (Had to modify husk and spacebase to supply sizes to sparklers, as this was only implemented for explosions.). &lt;br /&gt;
&lt;br /&gt;
Ok that's me for today, catch you next time on BlindSide Development Log!&amp;amp;nbsp;:P &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''I think we should open this log to everyone BS, what do you think?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide's response] - ''BlindSide's Star Sonata Development log grand opening! I like the sound of that. (I also like the sound of my own voice, lol)'' &lt;br /&gt;
&lt;br /&gt;
== May 17th  ==&lt;br /&gt;
&lt;br /&gt;
I spent more time fixing wormholes and a few other things today. I made a small video showing the two seperate parts of a wormhole, they are combined in the final product: http://irrlichtirc.g0dsoft.com/BlindSide/wh.wmv &lt;br /&gt;
&lt;br /&gt;
Anyway enough about that, I added a cool bulge to lasers: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserBulge.jpg]] &lt;br /&gt;
&lt;br /&gt;
Particle effects: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserParticle.jpg]] &lt;br /&gt;
&lt;br /&gt;
Custom core textures: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserYingYang.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== May 16th  ==&lt;br /&gt;
&lt;br /&gt;
Something was annoying me about the last screenshot, it's the hard end that the lasers have, it looks very unprofessional (Like the C1 lasers&amp;amp;nbsp;:P, not baggin' on C1 or anything). I scratched my head for some time on how to get rid of this without resorting to to textures (Which means scrapping the whole geometry idea and starting from scratch). Solution: More geometry! I think I am getting better at writing meshes by hand. Mind you I only added 3 vertices, but the end result speaks for itself: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev7.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now to add some more variation as promised! &lt;br /&gt;
&lt;br /&gt;
== May 14th  ==&lt;br /&gt;
&lt;br /&gt;
Lasers of course should have an overly bright bit in the center, so with some more hacking I got this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev6.jpg]] &lt;br /&gt;
&lt;br /&gt;
Note that I don't use any textures for this, the laser is purely geometry and the color variation is from blending the vertex colors. This should in theory prove more efficient than a texture based solution, and more importantly it allows us to set any arbitary colors we want without extra hassle. &lt;br /&gt;
&lt;br /&gt;
== May 13th  ==&lt;br /&gt;
&lt;br /&gt;
Finally it is lasers time! Lasers are certainly one of the more interesting graphics elements. Few methods/variations arise: &lt;br /&gt;
&lt;br /&gt;
 - Criss cross 2 billboards to create a beam effect, fairly simple. &lt;br /&gt;
&lt;br /&gt;
No textures are needed here as we can just 2 more vertices and interpolate the vertex color from black at the edges to whatever the color is in the center. &lt;br /&gt;
&lt;br /&gt;
 - I could place one or two of those billboard volume light scene nodes on &lt;br /&gt;
the beam to create a bit more variation, &lt;br /&gt;
&lt;br /&gt;
I'm always meaning to use them somewhere but haven't found the place. &lt;br /&gt;
&lt;br /&gt;
 - A better idea would be to just use an elongated sphere and only render&lt;br /&gt;
 the bumps/animations on the lasers in the glow pass. &lt;br /&gt;
&lt;br /&gt;
This should create a nice effect, I will probably try this method first. &lt;br /&gt;
&lt;br /&gt;
 - For wide area laser/tractory type things a cone with scrolling textures &lt;br /&gt;
(Via texture matrices would be appropriate). &lt;br /&gt;
&lt;br /&gt;
I will probably just use whatever texture is provided with C1 and scroll that along the 3 dimensional cone, should come out nice. &lt;br /&gt;
&lt;br /&gt;
Well I am off to implement them and will hopefully have some screenshots in a few hours! &lt;br /&gt;
&lt;br /&gt;
(Some time passes) &lt;br /&gt;
&lt;br /&gt;
Ok, first of all, lets get acquainted with the Laser space objects. Process the start and endpoints and draw a simple line for debug output: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev1.jpg]] &lt;br /&gt;
&lt;br /&gt;
Oh dear that does not look right. Oh yes! The laser is using relative coordinates. Subtract that laser's position from the endpoint: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev2.jpg]] &lt;br /&gt;
&lt;br /&gt;
That's more like it! &lt;br /&gt;
&lt;br /&gt;
Now let's make it look more like a laser. After a bit of magic (And a complete re-write of an already available laser scene node for Irrlicht), we get something like this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev3.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now that's starting to look more like a laser! Let's try some glow and see what we get: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev4.jpg]] &lt;br /&gt;
&lt;br /&gt;
OK, maybe that's a little too much glow! Let's reduce the laser's radius when applying glow: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev5.jpg]] &lt;br /&gt;
&lt;br /&gt;
It's getting better! Next time we'll try adding a green light to the front of the ship when it fires a laser (Other surprises are in store!). That's all for today, stay tuned. &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''Starting to look very nice. Any way to add a bit of variation up and down the beam?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide response] - ''Thanks for your comment pip! The lasers will indeed get some variation once the basic look is perfected.''&lt;br /&gt;
&lt;br /&gt;
== May 12th  ==&lt;br /&gt;
&lt;br /&gt;
I've been improving the background generation on/off. On my Phenom 9950 system (2.6 ghz, Only using one core): &lt;br /&gt;
&lt;br /&gt;
 - Low/Medium settings take 60 milliseconds to generate the background nebula.&lt;br /&gt;
 - High+ settings take ~400 milliseconds to generate the background nebula.&lt;br /&gt;
&lt;br /&gt;
I may consider moving this to the gpu for better performance, as high settings systems will undoubtedly support this functionality (I would use the same code that creates the animated patterns on the suns, so it should be pretty damn fast). We'll see. &lt;br /&gt;
&lt;br /&gt;
Currently the background is placed on a flat billboard but I am considering moving this to a hemisphere/quarter-sphere(?) to create a more 3 dimensional feeling. &lt;br /&gt;
&lt;br /&gt;
[Smiley Comment] ''I assume the background will be the same each time you visit the same galaxy, correct? Its just generating the SAME nebula based on parameters set at universe creation, correct? I think the galaxies should keep their &amp;quot;look&amp;quot; from visit to visit.'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide reply] ''Thanks for the comment Smiley! That is correct, the nebula generator currently uses the galaxy id as the seed for the generation, so visiting the same galaxy twice would give you the same look and colors. '' &lt;br /&gt;
&lt;br /&gt;
[[Category:Client_2_Dev]]&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	<entry>
		<id>http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12080</id>
		<title>BlindSide Log</title>
		<link rel="alternate" type="text/html" href="http://starsonata.com/wiki/index.php?title=BlindSide_Log&amp;diff=12080"/>
				<updated>2009-05-24T06:04:46Z</updated>
		
		<summary type="html">&lt;p&gt;BlindSide: /* May 23rd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= BlindSide's Star Sonata Development Journal  =&lt;br /&gt;
&lt;br /&gt;
== May 23rd  ==&lt;br /&gt;
&lt;br /&gt;
More work on per-pixel lighting today. For those who know a thing or two about lighting mathematics, I scrapped the traditional attenuation formula for a simple (1.0 - distance / radius), works much better now. I also had a play around with a rim light (Originally intended for planet atmospheres but I think it tends to look nice on ships too.). A rim light is the fading white outline you see in the following image:&lt;br /&gt;
&lt;br /&gt;
[[Image:RimLight.png]]&lt;br /&gt;
&lt;br /&gt;
Believe it or not, there's still no bump mapping in that shot. Then again, I reckon that bumpmapping will have a more noticeable effect on things like planets and bigger ships. I'll hack that in and report back.&lt;br /&gt;
&lt;br /&gt;
== May 21st  ==&lt;br /&gt;
&lt;br /&gt;
Today I started on per-pixel lighting. I am supposed to go ahead and implement bumpmapping, rim lighting, and whatever effects I feel like stuffing in the shader to make it look pretty.&lt;br /&gt;
&lt;br /&gt;
Now, what is per-pixel lighting? Let's start with a brief explanation:&lt;br /&gt;
&lt;br /&gt;
In legacy graphics, lighting is calculated on a per-vertex level, for example, for your standard n dot l (normal dot product light direction) style lighting, it would be calculated for each vertex, based on the vertex normal, and then interpolated across the triangle. It typically produces ugly triangle shaped artifacts in under tessellated models (Models with a small amount of triangles).&lt;br /&gt;
&lt;br /&gt;
Something like this (Images thanks to LightHouse3d):&lt;br /&gt;
&lt;br /&gt;
[[Image:PointGL.gif]]&lt;br /&gt;
&lt;br /&gt;
Per-pixel on the other hand, performs the operation on every pixel, without the need to interpolate the final result across the triangle. It's typically more computationally expensive, but the results speak for themselves:&lt;br /&gt;
&lt;br /&gt;
[[Image:PointPix.gif]]&lt;br /&gt;
&lt;br /&gt;
Here is a side by side comparison of just ordinary lighting applied to a Zebu (No bumpmaps). The one on the left is per-pixel and the one on the right is fixed function per-vertex lighting. Particularly near the cockpit you can make out how the per-pixel lighting approach produces a more distinct result, where as the lighting on the per-vertex version looks rather vague:&lt;br /&gt;
&lt;br /&gt;
[[Image:ZebuPerPix.jpg]]&lt;br /&gt;
&lt;br /&gt;
Please note that the per-pixel version is using slightly different material settings and therefore it is slightly darker.&lt;br /&gt;
&lt;br /&gt;
Also, earlier in the forums I posted up a screenshot of the pax frigate. I think this is one of the ships that benefit the most in particular from per-pixel lighting. With the same viewing angle and position, this is the old shot:&lt;br /&gt;
&lt;br /&gt;
[[Image:OldPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
And this is the new (Note this was taken on Very High so it has anti-aliasing applied too unlike the old shot):&lt;br /&gt;
&lt;br /&gt;
[[Image:NewPaxFrigate.jpg]]&lt;br /&gt;
&lt;br /&gt;
That's all for today, folks.&lt;br /&gt;
&lt;br /&gt;
== May 19th  ==&lt;br /&gt;
&lt;br /&gt;
Added quite a few things since the last post, namely lightning style lasers. Jade Ion is now a combination of animated lightning and beam rather than a static custom image. I would post a screenshot but it won't do it justice, better to see it moving. Some lightning style lasers such as Really Big Laser are using pure lightning, and stuff like shield transference still use a static core texture (Screenshot in last post). &lt;br /&gt;
&lt;br /&gt;
On the lasers side I've also added some particles that emit from the firing point to create a sort of muzzle effect. Will need to test this with really big lasers (I don't specifically refer to Really Big Laser here). &lt;br /&gt;
&lt;br /&gt;
For explosions, I enhanced the look by using a seperate particle texture (And system), and made them only refract on ships. Sparklers take the sob size into account now, when available (Had to modify husk and spacebase to supply sizes to sparklers, as this was only implemented for explosions.). &lt;br /&gt;
&lt;br /&gt;
Ok that's me for today, catch you next time on BlindSide Development Log!&amp;amp;nbsp;:P &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''I think we should open this log to everyone BS, what do you think?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide's response] - ''BlindSide's Star Sonata Development log grand opening! I like the sound of that. (I also like the sound of my own voice, lol)'' &lt;br /&gt;
&lt;br /&gt;
== May 17th  ==&lt;br /&gt;
&lt;br /&gt;
I spent more time fixing wormholes and a few other things today. I made a small video showing the two seperate parts of a wormhole, they are combined in the final product: http://irrlichtirc.g0dsoft.com/BlindSide/wh.wmv &lt;br /&gt;
&lt;br /&gt;
Anyway enough about that, I added a cool bulge to lasers: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserBulge.jpg]] &lt;br /&gt;
&lt;br /&gt;
Particle effects: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserParticle.jpg]] &lt;br /&gt;
&lt;br /&gt;
Custom core textures: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserYingYang.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== May 16th  ==&lt;br /&gt;
&lt;br /&gt;
Something was annoying me about the last screenshot, it's the hard end that the lasers have, it looks very unprofessional (Like the C1 lasers&amp;amp;nbsp;:P, not baggin' on C1 or anything). I scratched my head for some time on how to get rid of this without resorting to to textures (Which means scrapping the whole geometry idea and starting from scratch). Solution: More geometry! I think I am getting better at writing meshes by hand. Mind you I only added 3 vertices, but the end result speaks for itself: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev7.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now to add some more variation as promised! &lt;br /&gt;
&lt;br /&gt;
== May 14th  ==&lt;br /&gt;
&lt;br /&gt;
Lasers of course should have an overly bright bit in the center, so with some more hacking I got this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev6.jpg]] &lt;br /&gt;
&lt;br /&gt;
Note that I don't use any textures for this, the laser is purely geometry and the color variation is from blending the vertex colors. This should in theory prove more efficient than a texture based solution, and more importantly it allows us to set any arbitary colors we want without extra hassle. &lt;br /&gt;
&lt;br /&gt;
== May 13th  ==&lt;br /&gt;
&lt;br /&gt;
Finally it is lasers time! Lasers are certainly one of the more interesting graphics elements. Few methods/variations arise: &lt;br /&gt;
&lt;br /&gt;
 - Criss cross 2 billboards to create a beam effect, fairly simple. &lt;br /&gt;
&lt;br /&gt;
No textures are needed here as we can just 2 more vertices and interpolate the vertex color from black at the edges to whatever the color is in the center. &lt;br /&gt;
&lt;br /&gt;
 - I could place one or two of those billboard volume light scene nodes on &lt;br /&gt;
the beam to create a bit more variation, &lt;br /&gt;
&lt;br /&gt;
I'm always meaning to use them somewhere but haven't found the place. &lt;br /&gt;
&lt;br /&gt;
 - A better idea would be to just use an elongated sphere and only render&lt;br /&gt;
 the bumps/animations on the lasers in the glow pass. &lt;br /&gt;
&lt;br /&gt;
This should create a nice effect, I will probably try this method first. &lt;br /&gt;
&lt;br /&gt;
 - For wide area laser/tractory type things a cone with scrolling textures &lt;br /&gt;
(Via texture matrices would be appropriate). &lt;br /&gt;
&lt;br /&gt;
I will probably just use whatever texture is provided with C1 and scroll that along the 3 dimensional cone, should come out nice. &lt;br /&gt;
&lt;br /&gt;
Well I am off to implement them and will hopefully have some screenshots in a few hours! &lt;br /&gt;
&lt;br /&gt;
(Some time passes) &lt;br /&gt;
&lt;br /&gt;
Ok, first of all, lets get acquainted with the Laser space objects. Process the start and endpoints and draw a simple line for debug output: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev1.jpg]] &lt;br /&gt;
&lt;br /&gt;
Oh dear that does not look right. Oh yes! The laser is using relative coordinates. Subtract that laser's position from the endpoint: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev2.jpg]] &lt;br /&gt;
&lt;br /&gt;
That's more like it! &lt;br /&gt;
&lt;br /&gt;
Now let's make it look more like a laser. After a bit of magic (And a complete re-write of an already available laser scene node for Irrlicht), we get something like this: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev3.jpg]] &lt;br /&gt;
&lt;br /&gt;
Now that's starting to look more like a laser! Let's try some glow and see what we get: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev4.jpg]] &lt;br /&gt;
&lt;br /&gt;
OK, maybe that's a little too much glow! Let's reduce the laser's radius when applying glow: &lt;br /&gt;
&lt;br /&gt;
[[Image:LaserDev5.jpg]] &lt;br /&gt;
&lt;br /&gt;
It's getting better! Next time we'll try adding a green light to the front of the ship when it fires a laser (Other surprises are in store!). That's all for today, stay tuned. &lt;br /&gt;
&lt;br /&gt;
[Pip Comment] - ''Starting to look very nice. Any way to add a bit of variation up and down the beam?'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide response] - ''Thanks for your comment pip! The lasers will indeed get some variation once the basic look is perfected.''&lt;br /&gt;
&lt;br /&gt;
== May 12th  ==&lt;br /&gt;
&lt;br /&gt;
I've been improving the background generation on/off. On my Phenom 9950 system (2.6 ghz, Only using one core): &lt;br /&gt;
&lt;br /&gt;
 - Low/Medium settings take 60 milliseconds to generate the background nebula.&lt;br /&gt;
 - High+ settings take ~400 milliseconds to generate the background nebula.&lt;br /&gt;
&lt;br /&gt;
I may consider moving this to the gpu for better performance, as high settings systems will undoubtedly support this functionality (I would use the same code that creates the animated patterns on the suns, so it should be pretty damn fast). We'll see. &lt;br /&gt;
&lt;br /&gt;
Currently the background is placed on a flat billboard but I am considering moving this to a hemisphere/quarter-sphere(?) to create a more 3 dimensional feeling. &lt;br /&gt;
&lt;br /&gt;
[Smiley Comment] ''I assume the background will be the same each time you visit the same galaxy, correct? Its just generating the SAME nebula based on parameters set at universe creation, correct? I think the galaxies should keep their &amp;quot;look&amp;quot; from visit to visit.'' &lt;br /&gt;
&lt;br /&gt;
[BlindSide reply] ''Thanks for the comment Smiley! That is correct, the nebula generator currently uses the galaxy id as the seed for the generation, so visiting the same galaxy twice would give you the same look and colors. '' &lt;br /&gt;
&lt;br /&gt;
[[Category:Client_2_Dev]]&lt;/div&gt;</summary>
		<author><name>BlindSide</name></author>	</entry>

	</feed>