From bca325dec8e46d2253613ca08c54d3a1f37321b0 Mon Sep 17 00:00:00 2001 From: Elliot Bentine <7041164+ElliotB256@users.noreply.github.com> Date: Sun, 2 Mar 2025 23:41:07 +0000 Subject: [PATCH] Edge info --- content/getting_started/quickstart/index.md | 2 +- .../technical/objectrendersnapable/index.md | 6 +++ content/usage/outlines/bevel_v_edge.png | Bin 0 -> 17206 bytes content/usage/outlines/depth_edges.png | Bin 0 -> 15686 bytes content/usage/outlines/index.md | 42 +++++++++++++++--- content/usage/outlines/outlines_and_edges.png | Bin 0 -> 7449 bytes content/usage/outlines/overlap.png | Bin 0 -> 4686 bytes content/usage/overview/index.md | 3 +- themes/zola_easydocs_theme | 2 +- 9 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 content/usage/outlines/bevel_v_edge.png create mode 100644 content/usage/outlines/depth_edges.png create mode 100644 content/usage/outlines/outlines_and_edges.png create mode 100644 content/usage/outlines/overlap.png diff --git a/content/getting_started/quickstart/index.md b/content/getting_started/quickstart/index.md index c32e0f5..b5f5368 100644 --- a/content/getting_started/quickstart/index.md +++ b/content/getting_started/quickstart/index.md @@ -49,6 +49,6 @@ ProPixelizer uses the same `.meta` files for all assets and source files between You have now configured your project for ProPixelizer. The [example scenes](../examples) show you lots of interesting things you can do with ProPixelizer, and showcase various features of the plugin, so I recommend taking a look! -I hope you enjoy using ProPixelizer. If you have any issues, please do email me (elliot.bentine@gmail.com) or add me on Discord (elliotb256) and I will do my best to help. +I hope you enjoy using ProPixelizer. If you have any issues, please do email me (elliot.bentine@gmail.com), add me on Discord (elliotb256), or contact via the Discord server (see icon in the nav bar) and I will do my best to help. diff --git a/content/technical/objectrendersnapable/index.md b/content/technical/objectrendersnapable/index.md index e973878..2509053 100644 --- a/content/technical/objectrendersnapable/index.md +++ b/content/technical/objectrendersnapable/index.md @@ -18,3 +18,9 @@ The `Object Render Snapable` MonoBehavior allows the position of objects to be s ### Pixel Alignment +- `Align Pixel Grid`: whether to align an object's macropixels to the given `Pixel Grid Reference` when applying snapping. This can be used to prevent sub-pixel relative motion between two objects (for more detail on aligning pixel grids, see [here](@/usage/eliminate_pixel_creep/index.md)). This setting is only required if you are using [pixel expansion](@/usage/pixelization/index.md) +- `Alignment Pixel Size`: The size of the macropixel used when snapping an object's position with respect to the given `Pixel Grid Reference`. Normally, you want this property to be equal to your ProPixelizer material pixel size. When `Get Pixel Size From Material` is enabled, this property will be set automatically by getting the `Pixel size` property from a ProPixelizer material on the object. + +### Materials + +- `Configure Children`: When true, sets the material keywords required for snapping on all child meshes of this transform. \ No newline at end of file diff --git a/content/usage/outlines/bevel_v_edge.png b/content/usage/outlines/bevel_v_edge.png new file mode 100644 index 0000000000000000000000000000000000000000..99f85c776f29925429051893146ef3fa12f42c23 GIT binary patch literal 17206 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 literal 0 HcmV?d00001 diff --git a/content/usage/outlines/index.md b/content/usage/outlines/index.md index 6a33dc0..2dd55ce 100644 --- a/content/usage/outlines/index.md +++ b/content/usage/outlines/index.md @@ -1,19 +1,51 @@ +++ -title = "Edges and Outlines (Todo)" +title = "Edges and Outlines" weight = 4 +++ -Good edges and outlines are a key ingredient of pixel art; they help accentuate small details, and bring depth that mitigates against featureless 'flat' shading. +Good edges and outlines are a key ingredient of pixel art; they help accentuate small details and can be used to bring depth to areas of otherwise featureless 'flat' shading.ProPixelizer supports three different types of lines as described here. -ProPixelizer supports three different types of lines, as below: +{% article_image(image="outlines_and_edges.png", title="Outline and edge types") %} +The three line types are (left) outlines, (middle) edge highlights, and (right) bevels. +{% end %} ## Silhouette Outlines +In ProPixelizer, outlines are drawn around the silhouette of objects where the material has the same `ID` and (for [pixel expansion](@/usage/pixelization/index.md)) where the pixels are [aligned](@/usage/eliminate_pixel_creep/index.md). If you have an object with multiple mesh components - for example a character with equipment - then you may wish to assign the same `ID` to each material and align the meshes to ensure a silhouette is drawn around the entire character. +When two objects overlap, ProPixelizer performs additional depth testing of the ID-based outlines to make sure that outlines are only drawn for foreground objects; this prevents incorrect outlines from appearing on visible edge of the background object. -## Edge Highlighting +{% article_image(image="overlap.png", title="Depth tested outlines") %} +ProPixelizer performs depth-testing of silhouette outlines to ensure correct outlines when objects overlap. +{% end %} +The [Uber Shader](@/technical/ubershader/index.md) contains an `OutlineColor` property for silhouette outline control, where the alpha value controls the silhouette outline strength (and can be set to 0 to disable the outline entirely). The [ProPixelizer SubTarget](@/usage/shadergraph/index.md) for shader graph provides the `ProPixelizer Outline` color input node, which grants per-pixel outline control and can be used to create custom outline styles and animated outline effects. +## Edges -## Bevel Edges +ProPixelizer provides two methods for drawing edge lines on your models. +These methods work by analysing the normals rendered to the screen to identify ridges and folds in the mesh. +The `Normal Edge Detection Threshold` on the [ProPixelizer Render Feature](@/technical/render_feature/index.md) adjusts how sensitive the edge detection algorithm is, and the value can be tuned to detect more or less edges across the scene. +Additionally, ProPixelizer can perform edge detection by testing the scene depth in addition to screen normals, as shown in the image, when `Use Depth Testing For Edge Outlines` is enabled on the Render Feature. + +{% article_image(image="depth_edges.png", title="Depth tested edges") %} +Edges are detected through analysis of both scene normals and depth. For example, the edges within the circle on the top surface all have the same surface normals (directly up), but edges are detected due to changes in the scene depth. +{% end %} + +{% article_image(image="bevel_v_edge.png") %} +A comparison of bevel and edge highlights. +{% end %} + +### Bevel Edges + +_Bevel edges_ create 1 pixel wide edges where the normals are the average of the faces surrounding the edge. The result is a line which is light reactive, responding to illumination as if the edge were bevelled. For edges on the rear side of an object, ProPixelizer will also fold the edge normals away from the camera, allowing the rear edges to interact with light sources behind the object to create a rim light effect. + +In the [Uber Shader](@/technical/ubershader/index.md) the normal blending for edge bevelling is controlled by the `Edge Bevel Weight` property, while in the [ProPixelizer SubTarget](@/usage/shadergraph/index.md) for ShaderGraph the corresponding input node is `ProPixelizer Bevel Weight`. + +### Edge Highlights + +The edge highlight adds or subtracts a constant color to an object's detected edges to brighten or darken them. +In the [Uber Shader](@/technical/ubershader/index.md) the color is controlled by the `Edge Highlight Color` property, and in the [ProPixelizer SubTarget](@/usage/shadergraph/index.md) for ShaderGraph the corresponding input node is `ProPixelizer Edge Highlight`. +Color values less than 0.5 will darken edges, color values above 0.5 will lighten edges, and values of 0.5 will make no difference. +The alpha value can be used to control the edge highlight strength. \ No newline at end of file diff --git a/content/usage/outlines/outlines_and_edges.png b/content/usage/outlines/outlines_and_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e603e1d2cb62a7b631430650cce160bc633042 GIT binary patch literal 7449 zcmeHMX;c$gn~ov~0Y2F^>@lK90F}tnt$>sYD2iwc7^9$ACavs^vUG@uCVU`U(RR}y z2(7eY3jrx50THl~rD%z?qDTl37R48&JBdu z&bFG#o4+|V{XTB)NQEk3*c6a`L<@~o0c$NJxRE8F+J}P7sYU*C|^va)`c{)G*)+lgZR2({$dwHq;REMiv zkoRZL_?!9nPs8VB?d`&8iYv=DK2TX1)glx+D_cF%`3W+JP3yd-2b}-6bneMXYbDLk zN$234shhGz?hkcR0=vlG9>VE~__<-HBN{fBx=1@bL}L@leZfUm`16Uea5H1qIODBa z+GTq=+j?Y~&A=*nov!ch9F0a2#f5pnHF(z{Juc`>Z24Brm6)1)?OX$FZkjtP?2uEL z3yZ$hbS0{9boZK6qqc4F)my1Filwy|47YddF54OmI{Vk{Z`g$et-L-6!6PQQ>!?lg z4H=Eyw;Fq%+&gj0M!fxf*-kHvHSkp0*l)!r*O6=R%Ic`SuO zoSEe7puru63`i!+3t0`nxU6HlMWrW;knG!5Kjc}u(<@(1*i!!!axkycNf+gdVK3r_ zr9VXw?fNs?HkAg=nRo<+?jPKNxy*6dlI~m0xk&BoN*Z2ReT}W2wIBvo3DO^zI_U&= z=l~a^;TG`ItM(7rlDCe+J=lY-76+0wsz?;AlAMH=tbKXez(r;PnONh%ja&(b*SBUv z(Y98H*Ak90=_8}Pa&M185Mk%iGSlLs5Z2-WX6XJSj1hsc zq18jF3S-3oC1Z|1JUjur6I$}ZZ>%aPwohgs+es5sCtY@VX&v2BkzpgX{ysdi)u>hL zYdccvkifA^x4pyA3F2MlO0D6-Vv7j7jD0QHF$O5V>RCFhYLc7PG&*b~NqKQh)0jx> z=maC}9Xd_~kJ2OeH>e9~2gcm(*coluVC=Z2ta1F7N(RC`_6Cf+IHs1LM(V71evu=w zv5g}UAP+hmd1p$6IT*KJ$ph=W^#P2G-&*9|to^2I>;WV*`1wwj#w8L3b?S>h>pZ%V zn@EC#yQjfO-2R2DhLTT)#4(7>RIk2e#e|)up>@)%l0S898h)Gz5&miQP^4oWnDhH) zUf8#sk%KSnq(}wINYV<)>i#mt;XAE zFNfpWvo+O(GxSD;Yovpw{=IVpi=iPb&FH)PJr4@}FI!mE`Q(3hl{<51&m@n%)m`nY z?rfG{dSCECkvHsPoLd2f<%)#k+ixYEL7wlRO{|7nTSA1zNUat@&x2ly(1xRBcXYUy z%;B#(I$3z?*gBeQHN0kvN>dhr{4BfrqI3C{U`ti%gIgyHq3rm!Y!+Uqp5+z^H{+|1 zhB4a74-N59HYK#T7_l(Bd9)CUUQ1A8(&G_EPR&MiG1m=obMuP`enC=-A*;@PFq?nf zoTi4Jp&8YG-!H2!(8Y@C87j(gN!9mB%o`{B`E8rb$yJq6M6Xjl+;nxJ_p^s$%Gom; z@AW*-a_;(ighn?<^n1Fi5ewIMoz0w(Rbwxuxo&O+hu@81rXePiHWV!kANKYD_JdhW z@DRk)je9@Q_KSJ@+L$*gYfStHukgU>*9^zGwq0}BLCT_x_X+o# za!*Y-*1wls6w4)tJ(48;b#mu$@r<*WHIzC3a!LJcW9Dqa{ByIpv6W#8NFLMT`6+4m z{CJ?aYV_w*bH(CQ1B`^R=5W><+En?yD_ZEYt!)BzYFQa#F++wIpZ7R`eWxEa4rP~+ z;nq34@b_ohOVI;OJ$I1juklp09xxx*$g%cc=eP#0z71td$`O+trjf+^zW>>bTr}6e zB!2!LV3ILeQZHBEIXui@hm-`)oiO6l&IMc*KUsD)K~^b_n;9>keV0y~&o2SP4L`Tv z)-RrrcbmzlMP{>o<-L=st`pxlYLj8tO$s;H>DNqi^OmCV_WXq>yogM3+Oj=ZK=Q^x zDBD-y<7@|DO&t$YewqDoBK!(6Pyx5(!lm!wumEiANe}){8;*oU3GyT|iDSv?R6qO8 zA23CDCDr=BfE8UaKOh;T2)p!n((A11IO2W(DDo!09y%dNCUPVkj5L>pgxV{yd+dg8 z7FSP^lR{E$9+KnV+}8hTq6gpM$3I1Xf`nFD#8YDT-OFCvo7!QZ$RXe?pjENE4Rfr? zRp44Zl%SJpe=zYv7rgMPKjxBw=%XQP6@CB?eAw3K&YTc4 zj^qs)HuJ#nREHd}lLGWdmHC&)3Lsu4B>SL`W|ClzwNcxo0LK?g!7CGdF7@km&Y!DY4XBvMVOH6P3xI9@mCWX&@TH=W>i{uGug*V6xj_J z^tiAt?kd1g!$m$`y&4W58r_Z;zOjT`%wZ#eR!}HqW&3(SKVKgm>N(d4SPtD7u#Lzx z;YgOTLy8m&S@W}85WIv3Md#D9s;(fl=`G~daCs48aux|)zd5;5kh4({O|Ku85k=Mk zl=DYpEjW^sdMJ=wX9W?1v5HMJFVF_2g`@-whzyDu03t0R6Jhmbj|hBdg6y@k^-i<1 zQ<2@5k+)kE8RPfymZhi&FLdBHNDCmD3nc5*sClA?KHY@1JP?!iv+8u&%G zPOWbP-@^)9LY_9m{W?>E(EztzdPFdKR3p^L5TNN$PvH~ zv%qFRMEaiJ5OUvN9ZZC}pOIP~gB|XbQx}xavxGNff%PRUFL7U!LYRPQ`~p1wx1AF@ z=u{z44whOyQFHynkHix|lk zp2>9+cBI+y6bS8m&h@30I{Po_@Z(4f`_uyuf9?GVC$A9ba)IR$Mc}l}#0`POnj|Q? z?30fWSB3oD-5d?3G!JywLD8BV$$?MnfbbMOUbem{?XBWjgYI}>8EDDR;ms;0t~)^_ z5U2}5_Y_`euZKqcJ2Wui|AMB6j_aermhcO!Ps|n^aW`oB2wMJNzDm<7@@qe0O*)h|EB6Qi8AoK=E_l(7#fbpvRtMCIGcSo3nAX9VBxYWS1gu6Ome9 z5E}fOdj4nyBdPbe0@k|$>?duMue}QJvV<++LVnoF;J|(pyS*80TBTu02TzXIW;8kl z*uax#Zb^bH!kH%mV65(G*0O&hwMmey5`cA!Q=AXl%2Wsr9&}Yd$IUlxPX%}c8ACFl z4xd6;pUQJ8P>)qzMsSyLE^%M4#_z9(nIv_>y&f~EAB&x&!w*Kb6Gb}34JSgcCrJrJk>S+!e|`O{f@>fl4iHm4v=y0Ho~|xV(J1~1$bIM&pyi7E8{Ey741sw$^e^47 z%DPm^a39v77&3AaCbBj?(y6U&h=DO4`!}a1&pIht%+%%6GSd12K8E+c`%u+-l zMI{k(DQ)#Lp61#pWB{tqDy!rDEA0M|wPE>(fx&U9i;gEqmL_oKUv|#WDJ2bcrr0rZ zvc9?}ugP4b15$7uIQB2Otm3`AD5O2DjQ~hoJO7T9xCNB$X>Qoy^}loV3yu)sLI3eo zV_IA0g?drJ-H`naj!Lp31X*qKBqP6NR;ia zK`O621me(Lha4b-mzhY@j>nr9*iB}%S~vVz&DYxeIP?Y?zg%jGJ-?1FKV@^2Fq~FC;`&}S|WoMBl zie-9J>&QkO9IoHW@_bXPkMn>1ukQcr7i01@H@lM3wi)EF2Q=WeZS~$#1|2%{Z(1F& A6#xJL literal 0 HcmV?d00001 diff --git a/content/usage/outlines/overlap.png b/content/usage/outlines/overlap.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ff42f77c0df96c29e0dd1fe8217240d718328f GIT binary patch literal 4686 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 F{|#f*