{"action":"closed","number":8176,"pull_request":{"url":"https://api.github.com/repos/OpenRA/OpenRA/pulls/8176","id":35577973,"html_url":"https://github.com/OpenRA/OpenRA/pull/8176","diff_url":"https://github.com/OpenRA/OpenRA/pull/8176.diff","patch_url":"https://github.com/OpenRA/OpenRA/pull/8176.patch","issue_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/8176","number":8176,"state":"closed","locked":false,"title":"Load textures using premultiplied alpha.","user":{"login":"pchote","id":167819,"avatar_url":"https://avatars.githubusercontent.com/u/167819?v=3","gravatar_id":"","url":"https://api.github.com/users/pchote","html_url":"https://github.com/pchote","followers_url":"https://api.github.com/users/pchote/followers","following_url":"https://api.github.com/users/pchote/following{/other_user}","gists_url":"https://api.github.com/users/pchote/gists{/gist_id}","starred_url":"https://api.github.com/users/pchote/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pchote/subscriptions","organizations_url":"https://api.github.com/users/pchote/orgs","repos_url":"https://api.github.com/users/pchote/repos","events_url":"https://api.github.com/users/pchote/events{/privacy}","received_events_url":"https://api.github.com/users/pchote/received_events","type":"User","site_admin":false},"body":"There is a bunch of literature online about why premultiplied alpha is a good thing, so I won't repeat it here.  It also lets us simplify and improve our world sprite blend modes.\r\n\r\nImproved harvester animation:\r\n![harv](https://cloud.githubusercontent.com/assets/167819/7667377/08a4c972-fbfd-11e4-8005-86055bfa9610.png)\r\n\r\nImproved Deviator gas (same panel order as above):\r\n![deviator](https://cloud.githubusercontent.com/assets/167819/7668114/df9abba0-fc1e-11e4-83c7-6bc7f315af1d.png)\r\n\r\nIn the premultiplied color space additive blend mode is the same as the alpha blend mode with Alpha: 0 and Premultiply: false.  You can create various soft mixed blends by setting Alpha part way between 0 and 1.\r\n\r\nFixes #8168.","created_at":"2015-05-16T22:03:13Z","updated_at":"2015-05-24T11:15:54Z","closed_at":"2015-05-24T11:15:54Z","merged_at":"2015-05-24T11:15:54Z","merge_commit_sha":"8b22a59f7b618812535198c95dd204d6dbf9b00e","assignee":null,"milestone":{"url":"https://api.github.com/repos/OpenRA/OpenRA/milestones/14","html_url":"https://github.com/OpenRA/OpenRA/milestones/Next%20Release","labels_url":"https://api.github.com/repos/OpenRA/OpenRA/milestones/14/labels","id":1045444,"number":14,"title":"Next Release","description":"","creator":{"login":"obrakmann","id":4331210,"avatar_url":"https://avatars.githubusercontent.com/u/4331210?v=3","gravatar_id":"","url":"https://api.github.com/users/obrakmann","html_url":"https://github.com/obrakmann","followers_url":"https://api.github.com/users/obrakmann/followers","following_url":"https://api.github.com/users/obrakmann/following{/other_user}","gists_url":"https://api.github.com/users/obrakmann/gists{/gist_id}","starred_url":"https://api.github.com/users/obrakmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/obrakmann/subscriptions","organizations_url":"https://api.github.com/users/obrakmann/orgs","repos_url":"https://api.github.com/users/obrakmann/repos","events_url":"https://api.github.com/users/obrakmann/events{/privacy}","received_events_url":"https://api.github.com/users/obrakmann/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":46,"state":"open","created_at":"2015-03-30T19:12:40Z","updated_at":"2015-05-24T11:15:54Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/OpenRA/OpenRA/pulls/8176/commits","review_comments_url":"https://api.github.com/repos/OpenRA/OpenRA/pulls/8176/comments","review_comment_url":"https://api.github.com/repos/OpenRA/OpenRA/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/8176/comments","statuses_url":"https://api.github.com/repos/OpenRA/OpenRA/statuses/80a54fe4fe1c31b4653d3b886b41e2643d0c007d","head":{"label":"pchote:fix-palette-alpha","ref":"fix-palette-alpha","sha":"80a54fe4fe1c31b4653d3b886b41e2643d0c007d","user":{"login":"pchote","id":167819,"avatar_url":"https://avatars.githubusercontent.com/u/167819?v=3","gravatar_id":"","url":"https://api.github.com/users/pchote","html_url":"https://github.com/pchote","followers_url":"https://api.github.com/users/pchote/followers","following_url":"https://api.github.com/users/pchote/following{/other_user}","gists_url":"https://api.github.com/users/pchote/gists{/gist_id}","starred_url":"https://api.github.com/users/pchote/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pchote/subscriptions","organizations_url":"https://api.github.com/users/pchote/orgs","repos_url":"https://api.github.com/users/pchote/repos","events_url":"https://api.github.com/users/pchote/events{/privacy}","received_events_url":"https://api.github.com/users/pchote/received_events","type":"User","site_admin":false},"repo":{"id":455831,"name":"OpenRA","full_name":"pchote/OpenRA","owner":{"login":"pchote","id":167819,"avatar_url":"https://avatars.githubusercontent.com/u/167819?v=3","gravatar_id":"","url":"https://api.github.com/users/pchote","html_url":"https://github.com/pchote","followers_url":"https://api.github.com/users/pchote/followers","following_url":"https://api.github.com/users/pchote/following{/other_user}","gists_url":"https://api.github.com/users/pchote/gists{/gist_id}","starred_url":"https://api.github.com/users/pchote/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pchote/subscriptions","organizations_url":"https://api.github.com/users/pchote/orgs","repos_url":"https://api.github.com/users/pchote/repos","events_url":"https://api.github.com/users/pchote/events{/privacy}","received_events_url":"https://api.github.com/users/pchote/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pchote/OpenRA","description":"An open-source implementation of the Command & Conquer engine using .NET/mono and OpenGL. Runs on Windows, Linux and Mac.","fork":true,"url":"https://api.github.com/repos/pchote/OpenRA","forks_url":"https://api.github.com/repos/pchote/OpenRA/forks","keys_url":"https://api.github.com/repos/pchote/OpenRA/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pchote/OpenRA/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pchote/OpenRA/teams","hooks_url":"https://api.github.com/repos/pchote/OpenRA/hooks","issue_events_url":"https://api.github.com/repos/pchote/OpenRA/issues/events{/number}","events_url":"https://api.github.com/repos/pchote/OpenRA/events","assignees_url":"https://api.github.com/repos/pchote/OpenRA/assignees{/user}","branches_url":"https://api.github.com/repos/pchote/OpenRA/branches{/branch}","tags_url":"https://api.github.com/repos/pchote/OpenRA/tags","blobs_url":"https://api.github.com/repos/pchote/OpenRA/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pchote/OpenRA/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pchote/OpenRA/git/refs{/sha}","trees_url":"https://api.github.com/repos/pchote/OpenRA/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pchote/OpenRA/statuses/{sha}","languages_url":"https://api.github.com/repos/pchote/OpenRA/languages","stargazers_url":"https://api.github.com/repos/pchote/OpenRA/stargazers","contributors_url":"https://api.github.com/repos/pchote/OpenRA/contributors","subscribers_url":"https://api.github.com/repos/pchote/OpenRA/subscribers","subscription_url":"https://api.github.com/repos/pchote/OpenRA/subscription","commits_url":"https://api.github.com/repos/pchote/OpenRA/commits{/sha}","git_commits_url":"https://api.github.com/repos/pchote/OpenRA/git/commits{/sha}","comments_url":"https://api.github.com/repos/pchote/OpenRA/comments{/number}","issue_comment_url":"https://api.github.com/repos/pchote/OpenRA/issues/comments{/number}","contents_url":"https://api.github.com/repos/pchote/OpenRA/contents/{+path}","compare_url":"https://api.github.com/repos/pchote/OpenRA/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pchote/OpenRA/merges","archive_url":"https://api.github.com/repos/pchote/OpenRA/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pchote/OpenRA/downloads","issues_url":"https://api.github.com/repos/pchote/OpenRA/issues{/number}","pulls_url":"https://api.github.com/repos/pchote/OpenRA/pulls{/number}","milestones_url":"https://api.github.com/repos/pchote/OpenRA/milestones{/number}","notifications_url":"https://api.github.com/repos/pchote/OpenRA/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pchote/OpenRA/labels{/name}","releases_url":"https://api.github.com/repos/pchote/OpenRA/releases{/id}","created_at":"2010-01-02T07:54:09Z","updated_at":"2015-05-05T22:45:22Z","pushed_at":"2015-05-23T21:34:37Z","git_url":"git://github.com/pchote/OpenRA.git","ssh_url":"git@github.com:pchote/OpenRA.git","clone_url":"https://github.com/pchote/OpenRA.git","svn_url":"https://github.com/pchote/OpenRA","homepage":"http://www.ijw.co.nz/opensource.htm","size":94217,"stargazers_count":13,"watchers_count":13,"language":"C#","has_issues":false,"has_downloads":false,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":13,"default_branch":"master"}},"base":{"label":"OpenRA:bleed","ref":"bleed","sha":"78f1e9fb2fc0518f2e21555dd7b14cf153e48ba6","user":{"login":"OpenRA","id":409046,"avatar_url":"https://avatars.githubusercontent.com/u/409046?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenRA","html_url":"https://github.com/OpenRA","followers_url":"https://api.github.com/users/OpenRA/followers","following_url":"https://api.github.com/users/OpenRA/following{/other_user}","gists_url":"https://api.github.com/users/OpenRA/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenRA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenRA/subscriptions","organizations_url":"https://api.github.com/users/OpenRA/orgs","repos_url":"https://api.github.com/users/OpenRA/repos","events_url":"https://api.github.com/users/OpenRA/events{/privacy}","received_events_url":"https://api.github.com/users/OpenRA/received_events","type":"Organization","site_admin":false},"repo":{"id":959908,"name":"OpenRA","full_name":"OpenRA/OpenRA","owner":{"login":"OpenRA","id":409046,"avatar_url":"https://avatars.githubusercontent.com/u/409046?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenRA","html_url":"https://github.com/OpenRA","followers_url":"https://api.github.com/users/OpenRA/followers","following_url":"https://api.github.com/users/OpenRA/following{/other_user}","gists_url":"https://api.github.com/users/OpenRA/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenRA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenRA/subscriptions","organizations_url":"https://api.github.com/users/OpenRA/orgs","repos_url":"https://api.github.com/users/OpenRA/repos","events_url":"https://api.github.com/users/OpenRA/events{/privacy}","received_events_url":"https://api.github.com/users/OpenRA/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OpenRA/OpenRA","description":"An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. Runs on Windows, Linux and Mac OS X.","fork":false,"url":"https://api.github.com/repos/OpenRA/OpenRA","forks_url":"https://api.github.com/repos/OpenRA/OpenRA/forks","keys_url":"https://api.github.com/repos/OpenRA/OpenRA/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OpenRA/OpenRA/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OpenRA/OpenRA/teams","hooks_url":"https://api.github.com/repos/OpenRA/OpenRA/hooks","issue_events_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/events{/number}","events_url":"https://api.github.com/repos/OpenRA/OpenRA/events","assignees_url":"https://api.github.com/repos/OpenRA/OpenRA/assignees{/user}","branches_url":"https://api.github.com/repos/OpenRA/OpenRA/branches{/branch}","tags_url":"https://api.github.com/repos/OpenRA/OpenRA/tags","blobs_url":"https://api.github.com/repos/OpenRA/OpenRA/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OpenRA/OpenRA/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OpenRA/OpenRA/git/refs{/sha}","trees_url":"https://api.github.com/repos/OpenRA/OpenRA/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OpenRA/OpenRA/statuses/{sha}","languages_url":"https://api.github.com/repos/OpenRA/OpenRA/languages","stargazers_url":"https://api.github.com/repos/OpenRA/OpenRA/stargazers","contributors_url":"https://api.github.com/repos/OpenRA/OpenRA/contributors","subscribers_url":"https://api.github.com/repos/OpenRA/OpenRA/subscribers","subscription_url":"https://api.github.com/repos/OpenRA/OpenRA/subscription","commits_url":"https://api.github.com/repos/OpenRA/OpenRA/commits{/sha}","git_commits_url":"https://api.github.com/repos/OpenRA/OpenRA/git/commits{/sha}","comments_url":"https://api.github.com/repos/OpenRA/OpenRA/comments{/number}","issue_comment_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/comments{/number}","contents_url":"https://api.github.com/repos/OpenRA/OpenRA/contents/{+path}","compare_url":"https://api.github.com/repos/OpenRA/OpenRA/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OpenRA/OpenRA/merges","archive_url":"https://api.github.com/repos/OpenRA/OpenRA/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OpenRA/OpenRA/downloads","issues_url":"https://api.github.com/repos/OpenRA/OpenRA/issues{/number}","pulls_url":"https://api.github.com/repos/OpenRA/OpenRA/pulls{/number}","milestones_url":"https://api.github.com/repos/OpenRA/OpenRA/milestones{/number}","notifications_url":"https://api.github.com/repos/OpenRA/OpenRA/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OpenRA/OpenRA/labels{/name}","releases_url":"https://api.github.com/repos/OpenRA/OpenRA/releases{/id}","created_at":"2010-10-04T07:38:05Z","updated_at":"2015-05-24T10:16:48Z","pushed_at":"2015-05-24T11:15:54Z","git_url":"git://github.com/OpenRA/OpenRA.git","ssh_url":"git@github.com:OpenRA/OpenRA.git","clone_url":"https://github.com/OpenRA/OpenRA.git","svn_url":"https://github.com/OpenRA/OpenRA","homepage":"http://www.openra.net","size":176069,"stargazers_count":1921,"watchers_count":1921,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":691,"mirror_url":null,"open_issues_count":798,"forks":691,"open_issues":798,"watchers":1921,"default_branch":"bleed"}},"_links":{"self":{"href":"https://api.github.com/repos/OpenRA/OpenRA/pulls/8176"},"html":{"href":"https://github.com/OpenRA/OpenRA/pull/8176"},"issue":{"href":"https://api.github.com/repos/OpenRA/OpenRA/issues/8176"},"comments":{"href":"https://api.github.com/repos/OpenRA/OpenRA/issues/8176/comments"},"review_comments":{"href":"https://api.github.com/repos/OpenRA/OpenRA/pulls/8176/comments"},"review_comment":{"href":"https://api.github.com/repos/OpenRA/OpenRA/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OpenRA/OpenRA/pulls/8176/commits"},"statuses":{"href":"https://api.github.com/repos/OpenRA/OpenRA/statuses/80a54fe4fe1c31b4653d3b886b41e2643d0c007d"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"obrakmann","id":4331210,"avatar_url":"https://avatars.githubusercontent.com/u/4331210?v=3","gravatar_id":"","url":"https://api.github.com/users/obrakmann","html_url":"https://github.com/obrakmann","followers_url":"https://api.github.com/users/obrakmann/followers","following_url":"https://api.github.com/users/obrakmann/following{/other_user}","gists_url":"https://api.github.com/users/obrakmann/gists{/gist_id}","starred_url":"https://api.github.com/users/obrakmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/obrakmann/subscriptions","organizations_url":"https://api.github.com/users/obrakmann/orgs","repos_url":"https://api.github.com/users/obrakmann/repos","events_url":"https://api.github.com/users/obrakmann/events{/privacy}","received_events_url":"https://api.github.com/users/obrakmann/received_events","type":"User","site_admin":false},"comments":6,"review_comments":6,"commits":4,"additions":230,"deletions":91,"changed_files":24}}