{"action":"closed","number":109,"pull_request":{"url":"https://api.github.com/repos/mypaint/libmypaint/pulls/109","id":144041999,"html_url":"https://github.com/mypaint/libmypaint/pull/109","diff_url":"https://github.com/mypaint/libmypaint/pull/109.diff","patch_url":"https://github.com/mypaint/libmypaint/pull/109.patch","issue_url":"https://api.github.com/repos/mypaint/libmypaint/issues/109","number":109,"state":"closed","locked":false,"title":"Smudge Modes: Spectral Rendering and more [WIP]","user":{"login":"briend","id":6015639,"avatar_url":"https://avatars2.githubusercontent.com/u/6015639?v=4","gravatar_id":"","url":"https://api.github.com/users/briend","html_url":"https://github.com/briend","followers_url":"https://api.github.com/users/briend/followers","following_url":"https://api.github.com/users/briend/following{/other_user}","gists_url":"https://api.github.com/users/briend/gists{/gist_id}","starred_url":"https://api.github.com/users/briend/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briend/subscriptions","organizations_url":"https://api.github.com/users/briend/orgs","repos_url":"https://api.github.com/users/briend/repos","events_url":"https://api.github.com/users/briend/events{/privacy}","received_events_url":"https://api.github.com/users/briend/received_events","type":"User","site_admin":false},"body":"![image](https://user-images.githubusercontent.com/6015639/31048906-003ba5ee-a5dd-11e7-92de-4cbd3bd0aeb3.png)\r\n\r\nAbove; linear additive RGB blending (2.4 gamma), standard additive sRGB blending, and Scott Burns pigment blending (36 segment subtractive spectral method)\r\n\r\nI think this is mature enough to get some more eyeballs.  This introduces 6 additional smudge settings.  Each setting is independent and can be used in combination with any other setting.\r\nOriginal (long) thread started by @AnTi-ArT.\r\nhttps://community.mypaint.org/t/real-color-blending-wip/390/53\r\nThank you @AnTi-ArT  for starting this craziness, and I've used some of your HCY helper code in this PR but I don't know how to include you on the commit history.\r\nReadme:\r\nhttps://github.com/briend/libmypaint/blob/Burns/burns_subtractive_mode/Readme.md\r\n\r\n- [x] Scott Burns Spectral color blending method that simulates 36 light spectrums instead of RGB's 3  (Smudge Spectral)\r\n- [x] Spectral fall back to RGB:  If rgb.txt data file is missing, smudge will fall back to RGB mode.\r\n- [x] Adjustable Smudge Gamma (Smudge Gamma) (typically use 2.4)\r\n- [x] Chroma and Luma (HCY) mapped to hue angle difference (Smudge Chroma and Smudge Luma)\r\n- [x] Lockable smudge color (Smudge Lock)\r\n- [x] Alpha channel for subtractive modes handled by adjusting the mix ratio (smudge fac).  Less opaque colors become weaker.  Color blending initially appears to be much nicer but this needs to be verified.\r\n- [x] Increase smudge states from 1 to 11 and added smudge_bucket setting.  This allows more useful blending with wide brushes and smearing multiple colors.  Also allows interesting effects such as dirty brush that draws from different smudge buckets depending on direction, pressure, etc.\r\n- [x] Merged smudge_length_log to allow extremely slow/long smudge_states\r\n- [ ] Provide additional documentation to allow generating different color spaces besides RGB  Rec 709 and D65 light source. (nice-to-have but MyPaint will probably be Rec 709 internally for a long time)\r\n- [ ] Encode the rgb.txt data file into a binary format to reduce file size from 11GB to probably ~2GB.\r\n- [ ] rgb.txt file needs to be in current working dir; should be placed in a more standard location\r\n- [x] Verify sRGB to RGB logic; it may not be coherent to have an adjustable gamma in conjunction with the weird linear portion of the sRGB formula.  I think it's ok to adjust but generally you'll want 2.4 to be correct.\r\n- [x] Make settings RGB vs Spectral and Normal vs Subtractive (so you can have normal spectral mixing, etc)\r\n\r\nSmudge Chroma demo:\r\nhttps://youtu.be/L9CFmRr0Nwk\r\n\r\nSmudge Luma demo:\r\nhttps://youtu.be/lTIzVb2owhQ\r\n\r\nSmudge Lock demo:\r\nhttps://youtu.be/z-JOnRm3BXU\r\n\r\nSmudge Buckets demo:\r\nhttps://youtu.be/bMDNKevaQZs\r\nhttps://youtu.be/3v0V6HodO-Y\r\n\r\nHere's an comparison showing the effects of various settings. \r\n\r\nhttps://flic.kr/p/C5BC5w\r\n\r\nI've broken down the Smudge Chroma and Smudge Luma further into Normal and Burns modes, designated by \"n\" and B\".\r\n","created_at":"2017-09-30T19:53:23Z","updated_at":"2018-04-24T17:39:24Z","closed_at":"2018-04-24T17:39:24Z","merged_at":null,"merge_commit_sha":"93989cfc9459f32160e2fb36bfdd7a219f07c6b7","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":106184391,"url":"https://api.github.com/repos/mypaint/libmypaint/labels/enhancement","name":"enhancement","color":"1d76db","default":true}],"milestone":null,"commits_url":"https://api.github.com/repos/mypaint/libmypaint/pulls/109/commits","review_comments_url":"https://api.github.com/repos/mypaint/libmypaint/pulls/109/comments","review_comment_url":"https://api.github.com/repos/mypaint/libmypaint/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mypaint/libmypaint/issues/109/comments","statuses_url":"https://api.github.com/repos/mypaint/libmypaint/statuses/c67c134b1070938b4ea3eb889d89e54075b34693","head":{"label":"briend:Burns","ref":"Burns","sha":"c67c134b1070938b4ea3eb889d89e54075b34693","user":{"login":"briend","id":6015639,"avatar_url":"https://avatars2.githubusercontent.com/u/6015639?v=4","gravatar_id":"","url":"https://api.github.com/users/briend","html_url":"https://github.com/briend","followers_url":"https://api.github.com/users/briend/followers","following_url":"https://api.github.com/users/briend/following{/other_user}","gists_url":"https://api.github.com/users/briend/gists{/gist_id}","starred_url":"https://api.github.com/users/briend/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briend/subscriptions","organizations_url":"https://api.github.com/users/briend/orgs","repos_url":"https://api.github.com/users/briend/repos","events_url":"https://api.github.com/users/briend/events{/privacy}","received_events_url":"https://api.github.com/users/briend/received_events","type":"User","site_admin":false},"repo":{"id":63972785,"name":"libmypaint","full_name":"briend/libmypaint","owner":{"login":"briend","id":6015639,"avatar_url":"https://avatars2.githubusercontent.com/u/6015639?v=4","gravatar_id":"","url":"https://api.github.com/users/briend","html_url":"https://github.com/briend","followers_url":"https://api.github.com/users/briend/followers","following_url":"https://api.github.com/users/briend/following{/other_user}","gists_url":"https://api.github.com/users/briend/gists{/gist_id}","starred_url":"https://api.github.com/users/briend/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briend/subscriptions","organizations_url":"https://api.github.com/users/briend/orgs","repos_url":"https://api.github.com/users/briend/repos","events_url":"https://api.github.com/users/briend/events{/privacy}","received_events_url":"https://api.github.com/users/briend/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/briend/libmypaint","description":"libmypaint, a.k.a. \"brushlib\", is a library for making brushstrokes which is used by MyPaint and other projects.","fork":true,"url":"https://api.github.com/repos/briend/libmypaint","forks_url":"https://api.github.com/repos/briend/libmypaint/forks","keys_url":"https://api.github.com/repos/briend/libmypaint/keys{/key_id}","collaborators_url":"https://api.github.com/repos/briend/libmypaint/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/briend/libmypaint/teams","hooks_url":"https://api.github.com/repos/briend/libmypaint/hooks","issue_events_url":"https://api.github.com/repos/briend/libmypaint/issues/events{/number}","events_url":"https://api.github.com/repos/briend/libmypaint/events","assignees_url":"https://api.github.com/repos/briend/libmypaint/assignees{/user}","branches_url":"https://api.github.com/repos/briend/libmypaint/branches{/branch}","tags_url":"https://api.github.com/repos/briend/libmypaint/tags","blobs_url":"https://api.github.com/repos/briend/libmypaint/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/briend/libmypaint/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/briend/libmypaint/git/refs{/sha}","trees_url":"https://api.github.com/repos/briend/libmypaint/git/trees{/sha}","statuses_url":"https://api.github.com/repos/briend/libmypaint/statuses/{sha}","languages_url":"https://api.github.com/repos/briend/libmypaint/languages","stargazers_url":"https://api.github.com/repos/briend/libmypaint/stargazers","contributors_url":"https://api.github.com/repos/briend/libmypaint/contributors","subscribers_url":"https://api.github.com/repos/briend/libmypaint/subscribers","subscription_url":"https://api.github.com/repos/briend/libmypaint/subscription","commits_url":"https://api.github.com/repos/briend/libmypaint/commits{/sha}","git_commits_url":"https://api.github.com/repos/briend/libmypaint/git/commits{/sha}","comments_url":"https://api.github.com/repos/briend/libmypaint/comments{/number}","issue_comment_url":"https://api.github.com/repos/briend/libmypaint/issues/comments{/number}","contents_url":"https://api.github.com/repos/briend/libmypaint/contents/{+path}","compare_url":"https://api.github.com/repos/briend/libmypaint/compare/{base}...{head}","merges_url":"https://api.github.com/repos/briend/libmypaint/merges","archive_url":"https://api.github.com/repos/briend/libmypaint/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/briend/libmypaint/downloads","issues_url":"https://api.github.com/repos/briend/libmypaint/issues{/number}","pulls_url":"https://api.github.com/repos/briend/libmypaint/pulls{/number}","milestones_url":"https://api.github.com/repos/briend/libmypaint/milestones{/number}","notifications_url":"https://api.github.com/repos/briend/libmypaint/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/briend/libmypaint/labels{/name}","releases_url":"https://api.github.com/repos/briend/libmypaint/releases{/id}","deployments_url":"https://api.github.com/repos/briend/libmypaint/deployments","created_at":"2016-07-22T17:54:57Z","updated_at":"2016-07-22T17:54:58Z","pushed_at":"2018-04-24T03:04:11Z","git_url":"git://github.com/briend/libmypaint.git","ssh_url":"git@github.com:briend/libmypaint.git","clone_url":"https://github.com/briend/libmypaint.git","svn_url":"https://github.com/briend/libmypaint","homepage":"http://mypaint.org","size":2135,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mypaint:master","ref":"master","sha":"03f223a7fab96af7726d5de372188fe541f65a4b","user":{"login":"mypaint","id":7860709,"avatar_url":"https://avatars1.githubusercontent.com/u/7860709?v=4","gravatar_id":"","url":"https://api.github.com/users/mypaint","html_url":"https://github.com/mypaint","followers_url":"https://api.github.com/users/mypaint/followers","following_url":"https://api.github.com/users/mypaint/following{/other_user}","gists_url":"https://api.github.com/users/mypaint/gists{/gist_id}","starred_url":"https://api.github.com/users/mypaint/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mypaint/subscriptions","organizations_url":"https://api.github.com/users/mypaint/orgs","repos_url":"https://api.github.com/users/mypaint/repos","events_url":"https://api.github.com/users/mypaint/events{/privacy}","received_events_url":"https://api.github.com/users/mypaint/received_events","type":"Organization","site_admin":false},"repo":{"id":20728367,"name":"libmypaint","full_name":"mypaint/libmypaint","owner":{"login":"mypaint","id":7860709,"avatar_url":"https://avatars1.githubusercontent.com/u/7860709?v=4","gravatar_id":"","url":"https://api.github.com/users/mypaint","html_url":"https://github.com/mypaint","followers_url":"https://api.github.com/users/mypaint/followers","following_url":"https://api.github.com/users/mypaint/following{/other_user}","gists_url":"https://api.github.com/users/mypaint/gists{/gist_id}","starred_url":"https://api.github.com/users/mypaint/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mypaint/subscriptions","organizations_url":"https://api.github.com/users/mypaint/orgs","repos_url":"https://api.github.com/users/mypaint/repos","events_url":"https://api.github.com/users/mypaint/events{/privacy}","received_events_url":"https://api.github.com/users/mypaint/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mypaint/libmypaint","description":"libmypaint, a.k.a. \"brushlib\", is a library for making brushstrokes which is used by MyPaint and other projects.","fork":false,"url":"https://api.github.com/repos/mypaint/libmypaint","forks_url":"https://api.github.com/repos/mypaint/libmypaint/forks","keys_url":"https://api.github.com/repos/mypaint/libmypaint/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mypaint/libmypaint/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mypaint/libmypaint/teams","hooks_url":"https://api.github.com/repos/mypaint/libmypaint/hooks","issue_events_url":"https://api.github.com/repos/mypaint/libmypaint/issues/events{/number}","events_url":"https://api.github.com/repos/mypaint/libmypaint/events","assignees_url":"https://api.github.com/repos/mypaint/libmypaint/assignees{/user}","branches_url":"https://api.github.com/repos/mypaint/libmypaint/branches{/branch}","tags_url":"https://api.github.com/repos/mypaint/libmypaint/tags","blobs_url":"https://api.github.com/repos/mypaint/libmypaint/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mypaint/libmypaint/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mypaint/libmypaint/git/refs{/sha}","trees_url":"https://api.github.com/repos/mypaint/libmypaint/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mypaint/libmypaint/statuses/{sha}","languages_url":"https://api.github.com/repos/mypaint/libmypaint/languages","stargazers_url":"https://api.github.com/repos/mypaint/libmypaint/stargazers","contributors_url":"https://api.github.com/repos/mypaint/libmypaint/contributors","subscribers_url":"https://api.github.com/repos/mypaint/libmypaint/subscribers","subscription_url":"https://api.github.com/repos/mypaint/libmypaint/subscription","commits_url":"https://api.github.com/repos/mypaint/libmypaint/commits{/sha}","git_commits_url":"https://api.github.com/repos/mypaint/libmypaint/git/commits{/sha}","comments_url":"https://api.github.com/repos/mypaint/libmypaint/comments{/number}","issue_comment_url":"https://api.github.com/repos/mypaint/libmypaint/issues/comments{/number}","contents_url":"https://api.github.com/repos/mypaint/libmypaint/contents/{+path}","compare_url":"https://api.github.com/repos/mypaint/libmypaint/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mypaint/libmypaint/merges","archive_url":"https://api.github.com/repos/mypaint/libmypaint/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mypaint/libmypaint/downloads","issues_url":"https://api.github.com/repos/mypaint/libmypaint/issues{/number}","pulls_url":"https://api.github.com/repos/mypaint/libmypaint/pulls{/number}","milestones_url":"https://api.github.com/repos/mypaint/libmypaint/milestones{/number}","notifications_url":"https://api.github.com/repos/mypaint/libmypaint/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mypaint/libmypaint/labels{/name}","releases_url":"https://api.github.com/repos/mypaint/libmypaint/releases{/id}","deployments_url":"https://api.github.com/repos/mypaint/libmypaint/deployments","created_at":"2014-06-11T14:31:54Z","updated_at":"2018-04-20T16:17:31Z","pushed_at":"2018-04-09T04:50:45Z","git_url":"git://github.com/mypaint/libmypaint.git","ssh_url":"git@github.com:mypaint/libmypaint.git","clone_url":"https://github.com/mypaint/libmypaint.git","svn_url":"https://github.com/mypaint/libmypaint","homepage":"http://mypaint.org","size":1819,"stargazers_count":137,"watchers_count":137,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":48,"mirror_url":null,"archived":false,"open_issues_count":30,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":48,"open_issues":30,"watchers":137,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mypaint/libmypaint/pulls/109"},"html":{"href":"https://github.com/mypaint/libmypaint/pull/109"},"issue":{"href":"https://api.github.com/repos/mypaint/libmypaint/issues/109"},"comments":{"href":"https://api.github.com/repos/mypaint/libmypaint/issues/109/comments"},"review_comments":{"href":"https://api.github.com/repos/mypaint/libmypaint/pulls/109/comments"},"review_comment":{"href":"https://api.github.com/repos/mypaint/libmypaint/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mypaint/libmypaint/pulls/109/commits"},"statuses":{"href":"https://api.github.com/repos/mypaint/libmypaint/statuses/c67c134b1070938b4ea3eb889d89e54075b34693"}},"author_association":"CONTRIBUTOR","merged":false,"mergeable":true,"rebaseable":true,"mergeable_state":"clean","merged_by":null,"comments":2,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":968,"deletions":60,"changed_files":8}}
{"actor":{"display_login":"briend"}}