{"action":"created","issue":{"url":"https://api.github.com/repos/ImageEngine/gaffer/issues/1403","labels_url":"https://api.github.com/repos/ImageEngine/gaffer/issues/1403/labels{/name}","comments_url":"https://api.github.com/repos/ImageEngine/gaffer/issues/1403/comments","events_url":"https://api.github.com/repos/ImageEngine/gaffer/issues/1403/events","html_url":"https://github.com/ImageEngine/gaffer/pull/1403","id":97768051,"number":1403,"title":"Shuffle","user":{"login":"johnhaddon","id":1133871,"avatar_url":"https://avatars.githubusercontent.com/u/1133871?v=3","gravatar_id":"","url":"https://api.github.com/users/johnhaddon","html_url":"https://github.com/johnhaddon","followers_url":"https://api.github.com/users/johnhaddon/followers","following_url":"https://api.github.com/users/johnhaddon/following{/other_user}","gists_url":"https://api.github.com/users/johnhaddon/gists{/gist_id}","starred_url":"https://api.github.com/users/johnhaddon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnhaddon/subscriptions","organizations_url":"https://api.github.com/users/johnhaddon/orgs","repos_url":"https://api.github.com/users/johnhaddon/repos","events_url":"https://api.github.com/users/johnhaddon/events{/privacy}","received_events_url":"https://api.github.com/users/johnhaddon/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-07-28T18:18:26Z","updated_at":"2015-07-28T18:48:34Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ImageEngine/gaffer/pulls/1403","html_url":"https://github.com/ImageEngine/gaffer/pull/1403","diff_url":"https://github.com/ImageEngine/gaffer/pull/1403.diff","patch_url":"https://github.com/ImageEngine/gaffer/pull/1403.patch"},"body":"This adds a Shuffle node to GafferImage, for shuffling data around between channels. It does this in a smart way such that no data is ever duplicated and the Shuffle node shares cache entries with the input node. The node itself is perfectly happy to deal with any number of channels with any names, but I've limited the UI for now to just always define a shuffle into the RGBA channels, since we haven't really built the concept of layers and arbitrary into the UI anywhere else yet.\r\n\r\n![shuffle](https://cloud.githubusercontent.com/assets/1133871/8939486/9916df34-355c-11e5-9034-ce63f55de7c4.png)\r\n\r\nIn this limited RGBA only UI it might be a bit odd that there's a dropdown menu for the destination of the shuffle as well as the source, but it seemed to me that it would make sense for the future, when there are many channels to choose from and we'd also want to provide menu items for creating new channels. If it seems weird let me know what the consensus preference is and I'll try to implement that instead..."},"comment":{"url":"https://api.github.com/repos/ImageEngine/gaffer/issues/comments/125713232","html_url":"https://github.com/ImageEngine/gaffer/pull/1403#issuecomment-125713232","issue_url":"https://api.github.com/repos/ImageEngine/gaffer/issues/1403","id":125713232,"user":{"login":"johnhaddon","id":1133871,"avatar_url":"https://avatars.githubusercontent.com/u/1133871?v=3","gravatar_id":"","url":"https://api.github.com/users/johnhaddon","html_url":"https://github.com/johnhaddon","followers_url":"https://api.github.com/users/johnhaddon/followers","following_url":"https://api.github.com/users/johnhaddon/following{/other_user}","gists_url":"https://api.github.com/users/johnhaddon/gists{/gist_id}","starred_url":"https://api.github.com/users/johnhaddon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnhaddon/subscriptions","organizations_url":"https://api.github.com/users/johnhaddon/orgs","repos_url":"https://api.github.com/users/johnhaddon/repos","events_url":"https://api.github.com/users/johnhaddon/events{/privacy}","received_events_url":"https://api.github.com/users/johnhaddon/received_events","type":"User","site_admin":false},"created_at":"2015-07-28T18:48:34Z","updated_at":"2015-07-28T18:48:34Z","body":"The general rule I've been trying to follow is that names should be short, and meet the expectations of the target user. So GafferImage gets to claim the short name Shuffle because it's a commonly used name in that domain, and much less commonly applied in 3D. If we wanted to use the shuffle terminology in GafferScene then we'd suffix it as ShufflePrimitiveVariables there, or perhaps we'd call it Copy or Rename because that's more generally used terminology for that domain.\r\n\r\nIt's a tricky one in general, but in this case I definitely think GafferImage gets priority in claiming the name."}}