text:
San Francisco,
Specific Aim 1: To determine feasibility of a 20-minute dyadic exercise program for
ambulatory individuals with dementia and caregivers living at home based on recruitment,
adherence and retention. Investigators will conduct a pilot randomized controlled trial (RCT)
with 20 dyads (total N = 40) in groups of 5 randomized to 16-week group exercise classes and
regular home practice or wait list in a cross-over design. Investigators will assess
feasibility of enrollment and retention, the proportion of completed outcome measures, and
adherence by class attendance logs, caregiver-reported home practice logs and qualitative
interviews to assess ease of implementation in the home environment. Investigators will
explore feasibility of weekly phone calls to (potentially overwhelmed) caregivers and Fit-bit
accelerometers as a measure for tracking home practice.
Specific Aim 2: To collect preliminary effect size data for sample size calculation for a
larger trial. Investigators will assess standard outcomes (such as the Short Physical
Performance Battery and Alzheimer's Disease Assessment Scale - cognitive subscale as primary
outcomes for affected individuals; and Caregiver Burden Inventory for caregivers) commonly
used in pharmacological studies of individuals with dementia at baseline, 16 and 32 weeks and
calculate effect sizes (Cohen's d) for between-group differences in outcome changes in the 20
dyads of the RCT described in Specific Aim 1.
Specific Aim 3: To explore the feasibility of using non-invasive Near-Infrared Spectroscopy
(NIRS) to assess regional cortical brain oxygenation and its sensitivity to change.
Investigators will compare brain oxygenation variations before and after the exercise
intervention during a memory task for the seniors with dementia.
Alzheimer's dementia (AD) is a major public health challenge for our century. Research into
pharmaceutical therapies has been disappointing and not provided any safe medications that
can halt the disease's trajectory of decline in the cognitive, functional, emotional and
social capabilities of the affected individuals. For non-pharmacological approaches,
multi-domain exercise programs that address several of these capabilities in an integrated
way have shown strong promise for their ability to slow the decline. The team of
investigators has systematically developed one such program—the Preventing Loss of
Independence through Exercise (PLIÉ) program—an integrative exercise program that uses
procedural memory (memory for movements without explicit recall), can be taught at and
integrated into senior day care centers and has been pilot-tested by our team with
encouraging results for functional, cognitive and social outcomes (see Table 1).
However, (1) most people in the community do not have access to a day care center, are
concerned about the stigma associated with day care or are unable to afford it. This was
endorsed by semi-structured interviews conducted with caregivers and community-based
organizations in preparation for a larger study of the PLIÉ program. There is a huge need for
innovative programs to assist individuals with dementia and their caregivers in the
community. Irrespective of having access to day care or not, motivated caregivers, who are
aware of the benefits of exercises for their loved ones and spend hours alone with them at
home, ask: "What can we do with our [e.g. mother]?" They point out a major lack of guidance
for caregivers in the community to be able to use a regular exercise practice on a long-term
basis at home. Caregivers and seniors with dementia living together in the community are
dyads in need of a paired exercise program. (2) How exercise may delay cognitive and
functional decline is unknown. One hypothetical mechanism of action is an improved brain
oxygenation related to exercise. Near-Infrared Spectroscopy (NIRS) is a non-invasive method
to assess regional cortical oxygenation levels, has been suggested for the early diagnosis of
Alzheimer's dementia, but has never been applied to longitudinal studies in this population.
Paired home exercise programs for seniors with dementia and their primary caregivers have
rarely been studied. A pilot study that used 6 'sticky hands' movement variations based on
Tai Chi, music and exercise incentives found improvements in 2 outcome measures considered to
be important in fall prevention (sit-to-stand time, one-legged stance time). However,
movements were limited to tai chi and outcomes to fall-related function, leaving out
cognitive function for which the PLIÉ program had shown such promising results.
The group of investigators is an established collaboration between the Osher Center for
Integrative Medicine and the Department of Psychiatry at UCSF and has recently pioneered a
novel, 45-minute, multi-domain program called Preventing Loss of Independence through
Exercise (PLIÉ) that integrates physical activity (training of procedural memory for basic
daily activities such as sitting and standing), cognitive stimulation (mindful body
awareness), social engagement (group movement and sharing of in-the-moment experiences), and
caregiver education (monthly home-visit). The investigators pilot-tested PLIÉ in 11
individuals with mild to moderate dementia who were attending an adult day program at the
Institute of Aging in San Francisco, CA (ClinicalTrials.gov registered NCT01371214), and
found (Table 1) preliminary evidence of medium to large, clinically meaningful effect sizes
com-pared to usual care (UC; 45 minutes of usual chair-based exercises at the day care
center) across a wide range of out-comes including measures of quality of life (0.83),
cognitive function (0.76), physical performance (0.34) and caregiver burden (0.49).7,11 That
study methodologically mimicked a drug study by including measures that are commonly used in
dementia medication trials, which enabled comparison of the magnitude of our results to
currently available dementia medications.. The investigators are now completing data
collection for a second implementation of the PLIÉ program at an adult day program in San
Rafael, CA (Senior Access). The intervention of the current proposal will be similar to PLIÉ
in using the same principles6 and taught by instructors trained in the PLIÉ program. However,
it will differ in its format: instead of a day-care center-based group program taught by
professional exercise instructors, it uses a dyadic approach, introduced through caregiver
support groups to pairs of individuals with dementia and their caregivers, initially using a
group class format, but taught to enable caregivers to practice independently at home. To
allow for wide-spread long-term routine application, it will be brief (20 minutes), use
personalized music associated with positive affect memories, and be supported by video
2 papers have been published about the study.
Therefore, the investigators propose studying a paired integrative exercise intervention that
can be practiced in dyads of caregivers and affected individuals at home or in a
community-based support group environment, does not require additional equipment, can be
easily learned by caregivers, and may ameliorate the impact of dementia for older persons and
caregivers. The investigators suggest a multimodal program that is based on implicit
procedural learning and the integrative principles of the PLIÉ program: it includes physical
(through touch) and social interaction with a trusted family member, focuses on physical
function such as balance, includes personalized music choices and singing, supports positive
affect, and uses language to cognitively enhance the experience of mind-body integration. It
promotes a playful, non-judgmental supportive attitude to foster a sense of embodied
personhood in individuals with dementia through joyful social interaction with an empowered
1. Recruitment. Study participants will be recruited from local caregiver support groups of
Kaiser Permanente in Oakland. Exercise instructors and the PI have already been invited
to give presentations at their regular meetings. Contacts have been established with 3
caregiver support groups meeting at Kaiser Permanente in Oakland, totaling about 100
caregivers, who meet once a month and confirmed strong interest to participate. Thus, it
is highly likely that we will twice be able to recruit 10 dyads of eligible
participants. In addition, investigators will give study flyers to caregiver support
managers at Kaiser Permanente, the local Alzheimer's Association groups, and the
Alzheimer's Services of the East Bay (ASEB). In addition, we will recruit at ASEB.
Caregivers will be informed about the study by brief presentations by the PI and an
exercise instructor during regular support group meetings. A flyer will be handed to
interested potential participants describing the study and providing an opportunity to
learn more by returning a form or calling the research study staff. Those caregivers who
express interest will be contacted by research staff by phone to further assess
interest/eligibility and to schedule a consent visit.
2. Informed consent. Verbal consent to be screened will be obtained over the telephone
prior to collecting information on demographics and medical and psychiatric history.
Written consent will be obtained with the affected individuals and caregivers together,
as described in more detail below. The consent forms will be reviewed and capacity to
consent will be assessed in primary participants based on responses to questions to
determine level of understanding of study procedures, risks, benefits and rights.
Participants who do not demonstrate capacity to consent will be asked to assent to study
procedures and caregivers will be asked to consent on their behalf. A separate consent
form will request permission to participate in video recording of exercise classes for
quality control purposes. After the consent process has been completed, the Modified
Mini-Mental State Exam (3MS) will be administered to affected individuals to assess
level of cognitive impairment. Consent procedures will take place at the Kaiser group
room unless otherwise requested by caregivers.
If the caregiver is not the Legally Authorized Representative (LAR) or the legal
guardian of the affected individual, the screening interview will be stopped.
Investigators will then mail a letter to the LAR or legal guardian and invite her/him to
contact us by mail or phone to discuss the study and the consent process. The screening
and eligibility questions for the affected individual will then be completed with the
LAR or legal guardian. If investigators do not get a response within 2 weeks they will
call the LAR or legal guardian by phone assuming that she/he has received our letter.
Only if this person permits the affected individual's study participation investigators
will contact the caregiver and the affected individual again.
How will investigators assess the potential participant's capacity to consent? Capacity
to consent will be assessed by research assistants (RA) who will be extensively trained
by the PI and co-investigators using a standardized procedure. Investigators first
provide the consent form to the patient and caregiver together and allow them to review
it. RAs then describe the key points of the form, pointing to the areas on the form
where the information is described in more detail. They then ask a series of yes/no
questions to assess understanding of the information in the form. If the participant
cannot answer the questions, RAs review the material again and point to the section on
the form. Investigators then repeat the questions. If participants are unable to answer
all of the questions on their own after review, RAs consider them to lack capacity to
consent. RAs then ask them if they would like to participate in the study to obtain
their assent. RAs say that they are going to ask the caregiver to sign the form on the
participant's behalf to obtain written consent. Most of the team's research assistants
have been and are psychology graduate students who are highly sensitive to working with
vulnerable patients. Investigators train new research staff by having them role play the
consent process until senior personnel determine that they are adequately prepared. They
then observe senior personnel performing the consent process on at least one study
participant. Subsequently they are observed performing the consent process until senior
personnel determine that they are competent. Investigators/RAs also have weekly team
meetings to discuss any difficulties that arise during consent or any other study
Randomization: Following the baseline assessments, assessing staff will open an opaque,
sealed envelop for each dyad (affected individual and caregiver). Envelops will be
numbered and will contain the group assignment. A statistician not involved in the study
will prepare these envelops and create a random sequence of numbers using a computer
program. There will be 2 piles of envelops, one for men and one for women to recruit a
similar proportions of male and female participants in both groups.
3. 1st Pilot-test Phase. Affected individual/caregiver dyads who consented will be invited
to participate in the first pilot phase of 10 dyads. These subjects will participate in
either Group 1 (initial intervention), which will participate first, or Group 2 (wait
list control group). Group 1 will participate in the Paired PLIÉ program 2 times/week
for 45 minutes for 4 weeks and then once/month for additional 3 months while Group 2
will be wait-listed. After Group 1 has completed their training, Group 2 will
participate in the PLIÉ program 2 times/week for 45 minutes for 4 weeks and then
once/month for additional 3 months. Group assignment will be random. Investigators will
strive to have an equal distribution of men/women in the two groups.
Intervention: the exercise protocol is based on the PLIÉ protocol, which the
investigators have developed in consultation with experts worldwide who have experience
performing different types of exercises in individuals with mild-to-moderate dementia,
including traditional strength-building exercises, yoga, Tai Chi and Feldenkrais.
Specifically, investigators have identified exercises from each of these traditions that
engage the muscles most needed to maintain independence--including lower body strength
(to help with getting out of bed/chair), balance (to minimize risk of falls), upper body
strength (to help with lifting), fine motor exercises (to help with activities such as
eating and brushing teeth), and pelvic floor exercises (to help with continence)--and
have combined them into a unique integrative exercise program. These exercises are
designed to be purposeful (i.e., to achieve a goal) and to build procedural ('muscle')
memory. In addition, breathing and guided meditation exercises are included to promote
relaxation and well-being.
While the PLIÉ program has been tested in a senior day care setting, investigators are
combining these exercises in a new way, that they can be practiced at home in dyads of
affected individuals and caregivers.
4. 2nd Pilot-test Phase. In a second phase investigators will repeat the identical protocol
and intervention with 10 more dyads of affected individuals and caregivers.
5. Pre- and post-intervention assessment. Investigators will perform a variety of standard
measures in all participants and caregivers. The following assessments will occur at
baseline and after the 3 follow-up months. They will primarily be utilized to assess
feasibility and logistics of data collection procedures. Separate appointments will be
made for affected individuals and caregivers to maximize the validity of data collected
(e.g., to ensure that caregivers do not 'help' affected individuals with answers to
questions and feel comfortable providing information about issues such as difficult
behaviors or levels of stress). Affected individuals assessments will take place at the
group room. The initial caregiver assessment will take place at the caregiver's home or
the group room. The first line of communication for follow-up appointments will be via
telephone or in person to minimize the risk of loss of privacy. At the caregiver
participant's request, further communication may be conducted via mail, email, fax or
text. Caregivers will be informed that these modes of communication may increase their
risk of loss of privacy. Mail, email, fax and text communications will include a
confidentiality statement. The minimum amount of identifying information will be
included in all communications. Study forms will include unique study ID numbers only.
Inclusion Criteria:
- Affected individuals: dementia diagnosis (any type, mild to moderate severity [defined
as independent in at least 1 basic ADL])
- Ambulatory and able to take 2 steps without cane or walker
- Living in the community in a private home or apartment
- English language fluency.
- Caregiver/care partner: lives with affected individual
- Motivated to practice regularly (4-5 times per week) at home
- Able to answer study questions related to the affected individual's functional status,
mood, behaviors, quality of life and their own feelings regarding caregiving
- English language fluency.
Exclusion Criteria:
- Affected Individuals: behavioral or physical issues that would be disruptive or
dangerous to themselves or others (e.g., active psychosis, drug abuse, severe
behavioral issues)
- Planning to move to a facility before the end of the study period
- Terminal illness (life expectancy < 1 year)
- Non-stable dementia medication dose
- Current participation in another research study.
- Caregiver/care partner: planning to place affected individual in an institutional
setting during the study period
- Terminal illness (life expectancy < 1 year)
- Behavioral or physical issues that are disruptive or dangerous.
Principal InvestigatorWolf E Mehling, MDUniversity of California, San Francisco
San Francisco, California 94115United StatesThere is no listed contact information for this specific location.Site Status: N/A
| All trademarks are property of their legal owners. | All Rights Reserved
ClinicalConnection.com is a resource that provides information on clinical trials conducted worldwide.
ClinicalConnection.com does not conduct or endorse clinical trials. Please consult your physician before participating.
© All Rights Reserved.
Privacy Policy
Terms of Service


text:
Singing from the Tree Tops!
This vibrant growth chart features fun loving birds having a grand party. Before you know it, your child will be as tall as a tree, so you'll want to mark every inch in a memorable way. The artwork is printed on high quality canvas, which is durable and easy to clean. Storing the growth chart is simple, just roll it up for a great keepsake item you'll treasure.
Shipping: FREE

subset: commoncrawl


text:
Flawed premises
- I am either physical or Non Physical, either dead or alive.
- My parents, because they were here long before I was born, and because they are my parents, know better than I do what is right or wrong for me.
- If I push hard enough against unwanted things, they will go away.
- I have come here to live the right way of life and to influence others to the same right way of living. And what feels right to me must be the right way of living for all.
- Because I am older than you, I am wiser than you; and therefore you should allow me to guide you.
- Who I am began the day I was born into my physical. As an unworthy Being, I was born into a life of struggle in order to try to achieve greater worthiness.
- With enough effort, or hard work, I can accomplish anything.
- To be in harmony with another, we have to want and believe the same things.
- To path to my joy is through my action. When I am feeling bad, I can get to a better-feeling place by taking action. I can focus upon a situation that I think is the reason I am feeling bad, and walk away from it. And once away from it, I will feel better. I can get to what I want by leaving what I don't want.
- I cannot have everything that I desire, so I have to give up some things that are important to me in order to get others.
- If I leave an unwanted situation, I will find what I am looking for.
- There is a finite container of resources that we are all dipping into with our requests. Therefore, when I satisfy my request for something, I deprive others of that resource. All of the abundance, resources, and solutions already exist, merely waiting to be discovered; and if someone else gets there first, then the rest of us will be deprived of that discovery.
- There are right ways and wrong ways to live. And all the people should discover and agree on what the right way of living is, and then that right way should be enforced.
- There is a God Who, having considered all things, has come to a final and correct conclusion about everything.
- You cannot know, while you are still in your physical body, the true reward or punishment for your physical actions. Your reward or punishment will be shown to you after your physical death.
- By gathering data about the manifestations or results of the way the people of the earth have lived and are living, we can effectively sort them into absolute piles of right or wrong. And once those determinations have been made, we then have only to enforce those conclusions. And once we get everyone to agree with our determinations — and, more important, once we get them to comply with them — we will then have harmony on Earth.
- Only very special people, like the founder Our group, can receive the right message from God. And all other messages from all other messengers are therefore incorrect.
- By ferreting out the undesirable elements in our society, we can eliminate them. And in their absence, we will be freer.
- A good relationship is one in which the dominant intention of each person involved is to find agreement and harmony with the other.
- When I focus upon things of a physical nature, I am less Spiritual.
- It is my job as a parent to have all the answers so that I can teach those answers to my children.
- I can criticize successful people and still achieve my own success.
Source: The Vortex by Esther and Jerry Hicks


text:
Sophisticated Robots Open New Door in Automation
Autonomous robots, developed in the labs of the Massachusetts Institute of Technology, combine sophisticated movement and advanced computing power. The BakeBot can bake a giant cookie from scratch. Photo: MIT Computer Science and Artificial Intelligence Lab
This transcript has been automatically generated and may not be 100% accurate.
... everything needs putting together Ikea furniture ... for one day ... robots bball to help people with a further two worlds ... this is the Ikea by ... the time a small tiny robots were needed furniture assembly system ... that attempts by researchers at MIT to build a robot that not only can pick up pieces of furniture ... to put them together ... such physical abilities coupled with advanced computing power opening a door to a new era in automation ... the Ikea but isn't MIT ... we drove by the networks capable of sophisticated gestures ... there are three others named Huey Dewey and Louie ... The Dugard ... and that they talk in its search ... the kids and cooking ... from scratch ... researchers say is difficult to predict how long it will take before robots can actually match the complex movements and hands feet and legs there are still more work to be done ... currently in development ... for a vacancy to revive the can drive up to ten miles an hour in just thirty three centimeters of the year ... researchers say the robots motion could one day inspired a new kind of transportation ...


text:
Painting Pottery Day at Leith
Today I went to the Ceramic Experience in Leith with Rebecca and Fiona. We got a really good deal as part of Itison and so we weren't really sure what to expect.
It. was. awesome. Super fun! You pick some unglazed pottery and are then let loose with paints. No time limit and they even sell tea and cake although you can also BYOB!
You can paint the table to test your design, and they have stencils and sponges and stamps, as well as aprons if needed 🙂
My camera decided to delete my photos during upload, but here you can see Rebecca's tea set and my dino plates.
They look all pastel and cute but these are the unglazed masterpieces – I'll post the results of glazed goodness as soon as we pick up the pieces in a few days.


text:
Serving Cape Coral, Fort Myers, No. Fort Myers, Estero, Bonita Springs, Lehigh Acres, & Beyond!
Over the years, Jerry has enjoyed supporting youth athletics in Lee County. He has coached youth soccer within the Cape Coral Soccer Association and youth basketball thru the Youth Basketball Association of Lee County (YBA). He also supports Bishop Verot High School and Bishop Verot Athletics.
Debbie Martin, secretary/treasurer is a transplant from Elizabethtown, Kentucky. Like most longtime Floridians her family relocated to Lee County, Florida in 1972 as part of a job transfer. Debbie attended St Michael Lutheran School thru middle school and then attended Cypress Lake High School for two years before transferring to Ft Myers High School. In 1979 she graduated from Ft Myers High School and began her college studies at Edison Community College (NKA Edison State College) where she earned her AA degree in 1981. In 1987 Debbie returned to college and received a BS degree in Finance from the University of South Florida in 1990. Over the years Debbie has volunteered at Good Shepherd Lutheran School and Bishop Verot High School.
Jerry and Debbie met in 1980 and were married in 1982. In 1984 they had their only child, Nick. Nick is a 2003 graduate of Bishop Verot High School and a 2008 graduate of the University of Florida Rinker School of Building Construction Management.
Both Jerry and Debbie are happy to offer their electrical services to the Southwest FL community. They take great pride in each and every job and make sure that every detail is in order every time. Their goal is to please each and every customer by offering dependable, quality service at an affordable price to everyone! They offer you a FREE estimate on any electrical service job, so give them a call today and get the job done right the first time!
JERMAR Electric is a proud member of BNI.
JERMAR Electric Service, Inc.
Certified Electrical Contractor
Residential & Commercial - Licensed & Insured
Call (239) 772-3598 today - We offer FREE Estimates!
No trip charges.*
(*excludes Sanibel Island & Captiva Island)
We accept most major credit cards!


text:
A massively multiplayer online role-playing game (MMORPG), MegaBits is a smartphone game played in the 'real world' through being reactive to each player's environment. The company launched at Startup Weekend Pittsburgh in 2012, and the game's community consists of around 1,000 users.
MegaBits allows users to catch, train and battle monsters. The MB team has created a customized game world by combining real-time map and weather data with an 8-bit design.
Click arrow to scroll through gallery.
"We've had to adapt our product to a more modern, mobile gaming system," MegaBits founder Patrick Perini said. "We've learned the lesson from our alpha and beta process that we can't just copy traditional [role playing games]…MegaBits is unique in its pairing of location-based augmented reality with the popular monster training genre. Unlike other mobile games, MegaBits creates a real-world-based experience that is ever-changing and evolving."
MegaBits hopes to progress the depth of the MMORPG experience for gamers through greater integration of a player's environment, while developing more fluid in-app spending opportunities. Perini believes MegaBits is an example of how game platforms can be grown like any other kind of startup.
"Mobile gaming is full of pain points; in-app purchase models, general inanity, poor controls, and [MegaBits] is uniquely positioned to address many of these issues, and create a mature mobile gaming experience," Perini said. "The mobile gaming market is crowded. And though we've carved out an identifiable niche, we still have to find their attention and keep their attention."
The 'right thing,' in the case of MegaBits, is a more dynamic world of pixelated monster hunting– built upon the already-validated market demand for MMORPGs on smartphones. MegaBits currently has six full-time employees, of whom Perini is the only remaining Startup Weekend member.
"At the beginning of 2014, I was fielding other job offers and genuinely considering closing up shop, before the product even got to market," Perini said. "When the Google Maps Pokémon Challenge launched, I was able to corral user response into evidence of market demand, and use that [to] raise our most recent round of funding."
Click arrow to scroll through gallery.
Slide used in the MegaBits Reddit AMA to show market demand.
As you can see from the MegaBits launch party, there is no shortage of enthusiasm with this team of gamers. Check out megabitsapp.com for product updates, information about MMORPGs, and for a free download.
Sep 2012, Startup Weekend
Jan 2013, Kickstarter
June 2013, AlphaLab
Oct 2013, Alpha shipped
May 2014, Seed raised
June 2014, Beta shipped
Startup IMPACT Story Questions
Jan 2015, Release with day-1 revenue
Andrew Hart (lead developer)
Ryan Hestin (architect & engineer)
Pat Kelley (game & sound design)
Vinh Duong (graphic design)
Kaeli Hood (writer)
Ben Sanders (intern: art)
Jobs created:
10 including freelancers
Customers served:
Products shipped:
Funding secured:
1 round + incubation
mobile games
Pittsburgh, PA


text:
First Associates Implements Artificial Intelligence to Enhance Customer Satisfaction and Boost Portfolio Performance
- May 2, 2017
- Posted by: admin
- Category: Competitive research, Finance & accounting, Funding trends, Innovation, press
Many businesses, large and small, have a huge source of great ideas that can help them improve, innovate, and grow, and yet so many of these companies never think of using this amazing corporate asset. What is this highly valuable asset? Its own people.
First Associates Loan Servicing Named Top Service Provider at the LendIt Industry Awards
- March 9, 2017
- Posted by: admin
- Category: Business plans, Finance & accounting, press
Growth through innovation/creativity. Rather than be constrained by ideas for new products, services and new markets coming from just a few people, a Thinking Corporation can tap into the employees.


text:
On The Menu: Raw Rainbow Rolls
Steamy summer weather calls for light, refreshing meals. When it's too hot to turn on the stove and you're craving something fresh, these raw rainbow rolls should hit the spot. They're packed full of flavor and nutrition, plus they're vegan and gluten-free – the perfect people-pleasing finger food that also happens to look bright and pretty on the plate.
1 red pepper, sliced
1 yellow pepper, sliced
2 scallions, chopped
1 cup of shredded carrots
1 cup of arugula
1/2 cup of clover sprouts
5 spears of asparagus, ribboned and chopped in half
1 tablespoon of salt
1 pack of brown rice paper
1. After you've chopped and sliced and shredded and ribboned all of the veggie ingredients, fill a large mixing bowl with warm water.
2. Dip one brown rice paper in the warm water for a few seconds. Then lay it on a clean and dry surface.
3. Place a mix of veggies in the center of the paper, leaving at least an inch or two of room around the diameter. Sprinkle with a little salt.
4. Fold the left and right sides of the paper in towards the middle, then roll up from the bottom. The slight dampness should help it stick together, but be gentle to avoid ripping.
5. Repeat until you've used up your veggies, and then create your own sauce for dipping. We like this ginger miso dressing.
p.s. Don't these seem like perfect appetizers for an impromptu summertime dinner party?


text:
Figure 1: Contact-hardening Soft Shadows in Sponza scene. Note how the green adornments' shadows are hard (because the shadows are close to the adornments) whereas shadows of poles hanged high in the air (poles are not visible in this screenshot) cast very blurry, barely visible shadows (like on the green adornment in the center of the figure or on the lit wall above the arc). Shadows of the columns in the center of Sponza best present contact-hardening nature of shadows. The content presented here, but from a different point of view, will be a subject of following screenshots. Compare this screenshot with screenshot 2 to better understand which objects' shadows we will be inspecting throughout the article.
Shadow Mapping [15] is by far the most prevalent technique used to render shadows in real-time. One of its advantages is that it's quite easy to get decent soft shadows with this technique as in [14]. From that point on we can go straight to contact-hardening soft shadows (CHSS) which was first introduced in Percentage-Closer Soft Shadows (PCSS) paper [7]. [2] reviews the subject extensively.
Soft shadows are slower than standard shadow mapping because they usually require taking more than one shadow map sample, as in aforementioned [14]. There are alternative approaches however – Exponential Shadow Maps (ESM) [6] and Variance Shadow Maps (VSM) [10] – that treat shadow map texels as random variables and apply statistical methods on them. These methods are usually faster but suffer from annoying artifacts like light-bleeding. A completely different approach to producing soft shadows is to blur them in screen space as in [4]. It's a very interesting approach but comes with all problems associated with computing in screen space – like how to blur a shadow boundary that is covering the entire screen without killing the GPU?
Contact-hardening soft shadows, based on [7], are even slower than regular soft shadows because they require even more samples to look for an average occluder's depth that is used in estimation of penumbra (region of transition between fully-lit and fully-shadowed areas). So up from barely one shadow map sample we might end up with 16 for occluder's depth estimation and 32 for actual shadow map filtering. That is a lot by today's standards, especially having video game consoles in mind. One implementation worth checking out that delivered with a big commerical game is [5].
Statistical methods, like ESM and VSM, and screen space methods both have their merits. In this article however I'll only focus on how to improve on PCSS. We will start with how to achieve decently big penumbras without the need to take dozens of samples and will proceed on how to make soft shadows contact-hardening at only a fraction of additional GPU time. We will also investigate checkerboarding and see how that relatively new optimization approach performs with regard to shadows rendering.
This article is meant for audience that already has experience in implementing shadow mapping and would like to have fast contact-hardening soft shadows in their games/simulations. This work is heavily based on PCSS [7] and aspires to be its improvement. There is a demo application [11] presenting techniques described here.
Figure 1 presents contact-hardening soft shadows in an actual scenario.
1 Soft Shadows with Few Samples
In order to have bigger penumbra regions a large number of shadow map samples is needed. An initial approach usually involves taking all shadow map samples within a given region. That can be a lot of samples, particularly when the shadow map is of high resolution (for a high-res shadow map, to cover the same world space region, more samples are needed than for a lower-res shadow map, assuming they both cover the same region in world space). A way to speed this up is to use GPU's sample gather instructions, just like they did in [5] and what is described in [12]. With gather instructions we can reduce the number of sampling operations in a shader four times. But even that might not be enough for big sample kernels that
one might want for elongated soft sunlight shadows.
An alternative to sampling the whole region is to randomly pick a few samples in the region and only use those. But if we take the same random set of samples and apply it to all pixels in the region we will end up with quite nasty banding. Compare figures 2 and 3. To counter this effect we can make sure that each pixel in the region will use a different set of random samples. This will result in noisy shadows, what usually is preferred to banding, but not always. Both have their mertis – noise gives randomness whereas banding gives stability. Ideally we would like something in-between. Turns out that various researchers have worked on this problem and came up with interesting solutions.
We have actually two problems right now to solve. The first one is to figure out what samples to pick for shadow map sampling. The second one is in what way we should pick different samples for different pixels in the region – as we know, using exactly the same samples for all pixels in the region causes banding. We will solve the first problem using Vogel disk samples and the second with interleaved gradient noise.
Figure 2: Naive shadows with 11 x 11 kernel, that is 121 samples.
Figure 3: Shadows with 16 samples. Banding is seen because each pixel uses the same shadow map sample coordinates.
1.1 Vogel Disk
Vogel disk algorithm [3] [1] spreads samples on a disk evenly, as shown in figure 4. A great feature of Vogel disk is that when you rotate the points they will never map onto themselves (a given sample will not map onto itself nor any other sample), unless you rotate by 2π.
Figure 4: Vogel disk.
Listing 1 shows how to generate Vogel disk coordinates in a shader.
float2 VogelDiskSample(int sampleIndex, int samplesCount, float phi) { float GoldenAngle = 2.4f; float r = sqrt(sampleIndex + 0.5f) / sqrt(samplesCount); float theta = sampleIndex ∗ GoldenAngle + phi; float sine, cosine; sincos(theta, sine, cosine); return float2(r ∗ cosine, r ∗ sine); }
Listing 1: Vogel disk samples generation
Alternatively to Vogel disk a somewhat similar set of samples can be generated with blue noise. Blue noise is also often used when not-that-random-randomness is needed, as in [8]. I checked both sets of samples and found that, at least for shadows, Vogel seems to be producing more accurate results with less undersampling. Also Vogel has the advantage that it's very cheap to compute at runtime. In source code of the demo there is an array declared that stores blue noise samples.
1.2 Interleaved Gradient Noise
Figure 3 actually uses Vogel disk samples for all screen's pixels but that is not enough to compensate for a low number of samples used. Vogel disk really shines when used in combination with a good random function applied per-pixel. Let's say that you have a pixels region where each pixel in the region uses the same Vogel disk samples (shown in figure 4) but each pixel applies slightly different rotation to all these Vogel samples, such that this rotation value spans range of [0;2p] for different pixels. This will guarantee that all pixels in the region will sample the shadow map with different sets of samples.
A good random function, called interleaved gradient noise, was developed by [9]. This function takes as input the pixel's window space coordinates and outputs a "random" number in [0;1] range. Multiplying the result by 2p and passing as argument phi to VogelDiskSample will result in very high quality, very cheap shadows, as presented in figure 5. Usage of interleaved gradient noise is the only difference between the result from figure 5 and 3. Also note how shadows in figure 5 are nicely rounded as compared to squary/blocky in figure 2. The reason for this is that in the latter case a naive 11 x 11 rectangular filter was used.
Figure 5: Interleaved Gradient Noise together with Vogel disk. Only 16 shadow map samples.
Listing 2 presents interleaved gradient noise function.
float InterleavedGradientNoise(float2 position_screen) { float3 magic = float3(0.06711056f, 0.00583715f, 52.9829189f); returnfrac(magic.z * frac(dot(position_screen, magic.xy))); }
Listing 2: Interleaved Gradient Noise
2 Contact-hardening Soft Shadows
In this section, we will see how contact-hardening shadows work, as presented in [7]. After that, we will go through two different ways that speed up the base algorithm.
2.1 Regular Solution
To add contact-hardening'ness to soft shadows all we need is to know how big penumbra for a given pixel is, or in other words, how big the shadow map sampling kernel for a given pixel should be. This is estimated with a procedure called average blocker search shown in figure 6. We have a receiver, whose little red square is the pixel we're calculating shadows for. There is also a blocker floating above the receiver that blocks some light and finally a light source (and its shadow map). We need to find depths (in light space) of pixels that block the red square from light, average those depths and use that average to compute size of penumbra in that area.
Think about what this particular shadow map from figure 6 contains. The right side of that shadow map contains depths of the blocker, whereas the left side stores the blue receiver's depths. If we take some kernel around the receiver's red area and take a few samples (orange dots) to sample the shadow map some of those samples will sample the blocker's depths (samples that are on the right side) and some will sample the receiver (samples that are on the left side). Since the red area's depth is more or less equal (up to some bias that we usually employ in shadow mapping techniques) to the depths to the left we don't consider them (those depths) as blockers. But we do treat as blockers depths that are smaller (closer to the light) than the depth of the red area, which in this case are depths that come from the green blocker. These depths, from the green blocker, are averaged together to yield average occluder's depth that will let us estimate pixel shadow's penumbra.
Figure 6: Average blocker search. Orange dots/samples' depths are checked against depths in the shadow map.
Shadow map's depths that are closer to the light are considered blockers and are averaged together.
It is important to realize that this algorithm has its drawbacks. Look again at figure 6 and the blocker.
Now imagine you have not one but two such blockers where one of them (call it b1) is very close to the light source and the second one (call it b2) is very close to the receiver. Since shadow map only stores depths of the closest layer, that is blocker b1 in this case, it has no information about blocker's b2 depths. And it is blocker b2's depths that we care about in this case. This is where average blocker search based on only one-layer shadow map will fail. An obvious solution to this problem would be to store more layers of depths in the shadow map but that would be an overkill. Fortunately, artifacts that are the result of this drawback are often negligible.
Listing 3 shows a function that calculates penumbra, which is a value used to scale shadow map sampling kernel.
float Penumbra(float gradientNoise, float2 shadowMapUV, float z_shadowMapView, int samplesCount) { floatavgBlockersDepth = 0.0f; floatblockersCount = 0.0f; for(int i = 0; i < samplesCount; i ++) { float2 sampleUV = VogelDiskOffset(i, samplesCount, gradientNoise); sampleUV = shadowMapUV + penumbraFilterMaxSize * sampleUV; floatsampleDepth = shadowMapTexture.SampleLevel(pointClampSampler, sampleUV, 0).x; if(sampleDepth < z_shadowMapView) { avgBlockersDepth += sampleDepth; blockersCount += 1.0f; } } if(blockersCount > 0.0f) { avgBlockersDepth /= blockersCount; return AvgBlockersDepthToPenumbra(z_shadowMapView, avgBlockersDepth); } else { return 0.0f; } }
Listing 3: Penumbra calculation.
Function Penumbra first finds average blockers depth and then converts that value to actual penumbra with AvgBlockersDepthToPenumbra.
Listing 4 shows the implementation of that function.
float AvgBlockersDepthToPenumbra(float z_shadowMapView, float avgBlockersDepth) { float penumbra = (z_shadowMapView - avgBlockersDepth) / avgBlockersDepth; penumbra *= penumbra; return saturate(80.0f * penumbra); }
Listing 4: Average blockers depth to penumbra conversion.
This function should be implemented such that it suits your needs.
The basic idea is to take the distance between pixel we're calculating shadows for z_shadowMapView and average blockers depth. The bigger that distance is the bigger the penumbra should be. In case of the demo accompanying this article, depths are all in shadow map's view space. The 3rd line of code calculates the distance and "normalizes" it. Later on, we square it to get rid off of possible minus sign but also to make a more visible transition between fully-hard and fully-soft shadows. Finally, the penumbra is scaled by some constant and brought down to [0;1] range.
The original formula from [7] is a bit different from listing 4 and takes light's size into account directly, making it more physically correct. It is shown in listing 5.
float AvgBlockersDepthToPenumbra(float lightSize, float z_shadowMapView, floatavgBlockersDepth) { float penumbra = lightSize * (z_shadowMapView - avgBlockersDepth) / avgBlockersDepth; }
Listing 5: Average blockers depth to penumbra conversion from [7].
You should fiddle with that function to get the look and feel of soft shadows and hard-to-soft transition that accomodates your needs.
For the sake of completeness listing 6 shows how penumbra estimation function is used in conjunction with actual shadow map sampling.
float penumbra = Penumbra(gradientNoise, shadowMapUV, z_shadowMapView, 16); float shadow = 0.0f; for(int i = 0; i < 16; i++) { float2 sampleUV = VogelDiskOffset(i, 16, gradientNoise); sampleUV = shadowMapUV + sampleUV * penumbra * shadowFilterMaxSize; shadow += shadowMapTexture.SampleCmp(linearClampComparisonSampler, sampleUV, z_shadowMapView).x; } shadow /= 16.0f;
Listing 6: Shadows computation with penumbra used as kernel scale.
In line 9, instead of using traditional shadow mapping by sampling shadow map and comparing depths, we use function SampleCmp together with linearClampComparisonSampler sampler to let hardware take four closest samples, compare them all and bilinearly filter the results. This is much faster than doing that in the traditional way.
Figure 7 presents contact-hardening soft shadows in action.
Figure 7: Regular contact-hardening soft shadows. We clearly see how far from the ground objects are. The red rectangle indicates an area with shadows with highly varying penumbra size hence some jittering/jaggies can be seen. These jaggies are caused by the fact that some pixels (randomized by interleaved gradient noise) fall in areas of zero penumbra and some in areas of maximum penumbra hence varying lightness/shadowness of pixels.
2.2 Penumbra Mask
Penumbra estimation, if uses the same number of samples as actual shadow mapping, can be equally expensive as actual full soft shadow mapping. So the cost of contact-hardening soft shadows is twice as big in this case. Lowering the number of samples by half (only for penumbra) can significantly reduce rendering time. It will still be a few dozens percent slower than full non-contact-hardening soft shadows though. The simplest way to significantly reduce rendering time is to apply the same trick that we use all the time in real-time rendering – render at lower resolution.
Shadows themselves need full-screen resolution because they are very high frequency phenomenon (there are rapid changes in intensity of the signal – there is a shadow of an object for a few pixels and then suddenly there can be a fully lit area, with shadow ending abruptly). But penumbra is actually changing gradually quite often so it is a good candidate for rendering at lower res and then upsampling the results. In essence, we split the shadow mask generation pass in two passes: first one that computes penumbra mask at quarter res (penumbra mask pass) and second that computes actual soft shadows but samples penumbra from the penumbra mask (shadow mask pass).
Figure 8 shows the result of that change.
Figure 8: Soft shadows with penumbra rendered in a separate pass in lower res.
As you can see it's quite nice with the exception that penumbra often ends abruptly (look at those oblong poles' shadows). If we look at how upsampled (bilinearly) penumbra mask looks like we will understand why (figure 9). We have for instance areas with maximum penumbra (white color), interleaved with zero penumbra areas (black color). The problem was there before but because we rendered in full res interleaved gradient noise was equally good for sampling for both shadows and penumbra. Now that we render penumbra in lower res it is not enough. Not all is lost though. A simple solution is to increase penumbra's sampling kernel's size. Multiplying by 1:2 (with regard to what is used for actual shadow mapping) will result in what is seen in figure 10.
Figure 9: Penumbra mask visualized.
Figure 10: Soft shadows with penumbra rendered in a separate pass in lower res using kernel scaling trick. The red rectangles outline the same types of areas that were described in caption of figure 7. This time, because we're rendering in lower res and upsample, jittering is more obvious and looks like sort of bubbles (despite the kernel scaling trick). It wouldn't be a big problem if it wasn't for a fact that very distracting swimming occurs under camera motion.
Figure 10's caption describes problem with swimming bubbles – even though we scaled the kernel it is not enough to eliminate all artifacts. We need another hack to fix this. The solution is to blur the penumbra mask to sort of soften the bubbles. Figure 11 shows how penumbra mask looks like when blurred with 7*7 separable Gaussian blur with s = 3. Figure 12 shows the final result of both applying kernel scaling and blurring the penumbra mask.
Figure 11: Penumbra mask blurred visualized.
Figure 12: Soft shadows with penumbra rendered in a separate pass in lower res. Kernel scaling of 1:2 for penumbra estimation applied. Also, penumbra mask used is blurred with 7*7 separable Gaussian blur with s = 3.
If you have an eye for detail you will notice that the problem we had before, with abruptly ending penumbra, has been reintroduced somewhat (compare shadow of a post on the left). It's not as bad as in figure 8 but little worse than in figure 10. So why is it back exactly? Because we blurred the penumbra mask and thus made zero-penumbra regions to bleed onto full-penumbra regions. We can fix this again by simply scaling penumbra kernel by more than 1:2. Of course, we cannot increase that scale indefinitely as at some point penumbra estimation will start to miss occluders and the result will not be conformant with what the shadow mask pass is sampling. But there are values in range about [1:2;1:6] where the vast majority of artifacts is gone.
Blurring penumbra mask introduces two other problems that don't necessarily need to be fixed for the effect to look good but it's worth knowing about them.
As we know, penumbra mask is calculated in lower res in screen space. We blur it to alleviate artifacts that stem from rendering in low res. But because we're working in the camera's screen space, blurring "just like that" will make penumbra mask to bleed/blend between geometries that are at possibly very different depths/distances from the camera. This is a huge problem for screen space effects like screen space ambient occlusion where they are immediately seen. But it turns out this is almost no problem for penumbra mask computation. If you want you can do smart blurring by sampling the depth buffer and compare depths but that is really not necessary in my opinion.
Another problem is a bit more annoying. Because we blur in screen space with a constant-size kernel, the farther away the camera goes from a shadow, the more penumbra blurring kicks in. This will have the effect of decreasing penumbra size for shadows that are far away from the camera (making soft shadows harder). To fight this just scale penumbra blur kernel using the distance from pixel to the camera, just as it is used in effects like screen space ambient occlusion. Note that this solution is not implemented in the demo application, but I quickly prototyped it locally and found it to work as expected.
Penumbra blurring is a must to avoid swimming bubbles. But it is possible to avoid blurring in of smaller values onto bigger values (this effect decreases penumbra size). Before blurring the penumbra mask with 7*7 kernel you can first use 7*7 max filter. These two, max and blur combined, will have the effect of only blurring outwards so no bigger values will ever be washed out by smaller ones. This idea actually sounds better than it works. The problem is that max filter loses information, penumbra information in this case, and this leads to a lot of subtle artifacts. Hence I'm not recommending using that filter. I've tried a multitude of combinations of max and Gaussian blur filters and always retracted to one single Gaussian blur pass. Also due to performance reasons.
There is actually one more alternative solution to drawbacks that blurring of the penumbra mask brings. Look at listing 3, line 27. Now, look at figure 9. As you can see, when a pixel is fully lit, i.e. it does not have any occluders, we return 0. But what if we returned 1 instead? The pole's (on the left) penumbra would not be affected by blurring at all and that shadow would look correct regardless of distance of a pixel from the camera. At least, in this case, it would be all fine. In other cases, we would have reversed artifacts. Earlier our problem was that distant shadows that should be soft would become hard. Here it would be the opposite – distant shadows that are hard would become soft. Unless we scaled Gaussian blur kernel according to pixel's distance from the camera of course.
One more important property of outputting 1 by default instead of 0 is that scaling the kernel in penumbra
mask pass is no longer necessary. So in the end you might prefer to output 1 on default.
There has been a lot of dicussion about problems related to rendering penumbra in a separate pass in lower res and how to fix them. Let's now sum things up. To get contact-hardening soft shadows we need to know what penumbra a pixel has. To calculate penumbra fast we need to do it in a pass separate from shadow mask because we can do it in lower resolution as penumbra is rather low frequency phenomenon. When we do so, things generally work except for some artifacts. To fix those artifacts it is usually sufficient to blur the penumbra mask and increase kernel size when sampling the shadow map in the penumbra mask pass. The latter is not necessary if penumbra mask outputs 1 instead of 0 on default.
At this point, you should have nice contact-hardening soft shadows that are almost as fast as non-contacthardening soft shadows. There is one last problem though that I wasn't able to solve. Again, because we're rendering penumbra in low res and we also blur it, there are some shadows swimming where areas with highly varying penumbras blend. This usually is a problem if you use too small shadow map for too big scene's area. But that is something you usually avoid by using cascade shadow mapping for instance. So all in all little shadows swimming that is left in those situations can be neglected.
2.3 Min Filter
Before I ever came up with an idea of penumbra mask I first came with an idea of using a min filter on a shadow mask. This solution is not appealing to me today but I wanted to mention it. It is implemented in the demo application but it's turned off "hardcodingly" so you need to fiddle with the source code to be able to turn it on.
In standard CHSS we first find average blocker's depth. Since that is expensive part of the algorithm I looked for ways to speed this up, even if they are only approximations. I came up with an idea to, instead of finding average blocker's depth, use minimum depth from the shadow map over some texels region (region of max penumbra size of course). In average blocker's depth we sample a bunch of texels, say in a 5*5 shadow map's region, to see if they are closer to the light source than the pixel we're calculating penumbra for; those that are closer to the light source are averaged together. The idea of min filter is to just take a single min value over the whole filter region 55 and use that directly instead of the average blocker's depth. The reason why min filter makes sense is that this value will always be closer to the light source than the pixel we're calculating penumbra for. So it is some kind of blocker's depth. Not very sophisticated and rather crude one but still.
But why would you do that if you can just compute the average? Because applying min filter over a region does not require from us doing it in the shadow mask pass. We can compute min shadow map over a shadow map in a separate pass. Moreover, min filter is a separable filter, which means we don't have to take n2 samples (assuming n*n region) but we can do two passes, horizontal and vertical, each requiring n samples, totalling 2n. We traded quadratic complexity (dependent on the screen's resolution) for linear complexity (dependent on shadow map size).
One problem with the min filter is that, by its nature, it loses a lot of information. It will create lumps of pixels, with all pixels in a lump having the same depth, and these depths will often differ significantly. A solution to that is to blur the min shadow map. Later, in the shadow mask pass, you simply sample the blurred min shadow map and use that instead for the average blocker's depth. Blurring the min shadow map will have the effect of pushing those min values a bit towards pixels, farther from the light source, what could possibly push them behind pixels that use them (an "occluder" ends up being behind a pixel). In practice, however, that is not a problem.
Figure 13 shows the results. Compare that to figure 12. One change is in round shadows of an adornment in the top middle part of the figure. Figure 12 handled that nicely whereas in figure 13 we see how min depth from some distant geometry is flooding neighbours, including the adornment, and makes its penumbra very large. Another problem occurs on the shadows of a column that is spread from the left to the center of the figures. Both the top pole's min depth is flooding the column as well as some distant geometry on the bottom
left of the picture, both making the column's shadows in the middle very penumbra-large.
Figure 13: Soft shadows with penumbra calculated using min filter applied to shadow map.
So we know min filter kind of sucks. Does it have any advantages over solution we discussed in the previous section? Yes. Because min filter works in shadow map's space and not in screen space we don't have any swimming artifacts under camera's motion. That is a nice feature of that algorithm as it makes it more stable.
3 Checkerboarding
Since the advent of "even more next-gen" consoles like PS4 Pro developers decided to aim even higher in terms of quality and try touching the magical 4k barrier. PS4 Pro indeed has measurably more computing power than bare bones PS4 but not enough to pull off 4k just like PS4 handled full HD. So developers resorted to kind of cheating to achieve 4k with only half of the power available. To checkerboarding.
Figure 14: Checkerboard pattern.
Look at figure 14. The idea of checkerboarding is to perform calculations only every other pixel in checkerboard pattern. This way we only need half of computing power. The missing pixels are then filled in some way. The tricky part is figuring out this "some way". The way that is implemented in the demo is by averaging the neighbours. Take a look at the figure again. Assume black pixels represent those for which we calculate shadows. Now think about one of the white pixels, which is not computed. The idea of averaging is to simply take the four neighbouring black pixels, average them and plug that value into the white pixel. There is one catch though. The neighbours might belong to different geometries and since shadows are rather a high-frequency phenomenon (as opposed to penumbra) averaging them thoughtlessly will end up in artifacts. To do it right we need to perform depth comparisons of the neighbours with the pixel we're averaging for and only blend in those neighbours whose depths don't differ much – it's the very same way we do it when performing bilateral upsampling in many postprocessing algorithms to save on computing power, like SSAO or depth of field.
Alternatively, instead of computing averages we could employ temporal filtering and flip the checkerboard pattern every second frame. This should result in shadows quality being on par with full res shadow mask.
If you have ever tried computing a high-frequency signal in low res and then upsample it you know that this just does not work well. It's hard to make SSAO stable, which is quite low-frequency effect, let alone shadow mask. That is true when the low res we are talking about means computing in a buffer which is half of the screen's width in width and half of the screen's height in height, or in other words four times smaller. In this scenario problems are mostly visible at oblique angles. When the camera is looking straight ahead on a wall with some even-not-that-smooth-shadows it's okay. But once the camera is at an oblique angle to some floor, swimming artifacts appear, stemming from undersampling, and they are extremely distracting. You might increase the resolution of the low res buffer such that overall it is twice the size of the screen's resolution but that will not eliminate the problem – swimming will remain, although it will be reduced a bit.
If instead of trying to squeeze as much as possible from rendering in low res and upsampling you will render in full res but in checkerboard pattern, what requires only half of memory and computing only half of the pixels, you will find out that the swimming problem at oblique angles is completely gone. That is the most powerful feature of this algorithm. There will still be some minor swimming artifacts in very detailed areas of the screen where you just don't have that info you would have had if you had stayed in standard full res but there are high chances that the result will be good enough.
Truth to be told, there is a little lie in statement that checkerboarding costs half as much as full res path. Checkerboarding requires smart upsampling, which includes sampling the depth buffer, and that costs some time. This pass's time is however constant. So the more expensive the checkerboard res computation pass the less, relatively, upsampling costs.
Checkerboarding is supported in the demo application. The application creates a separate render target for storing results of checkerboarded shadow mask. This render target is of height the same as the screen's height but with half the width. Checkerboard-computed pixels are "packed" into this buffer and later, in the upsample pass, unpacked. Also, the missing pixels are filled in (interpolated). Source code that handles checkerboarded shadow mask in shaders is located in two places. First, there are some minor modifications
to the shadow mask pass itself to handle checkerboarding. The second place is a dedicated shader that performs upsampling. The code is rather easy to follow. One important change is in the gradient noise formula in the shadow mask pass. Using the original formula made samples look less random than in full res. I experimented with the formula and found one modification to work reasonably well but I think that one could come up with a more scientific-based formula. Let's now see the only modification to the shadow mask shader code, presented in listing 7.
float2 CheckerResPixelCoordToFullResUV(int2 pixelCoord) { pixelCoord.x *= 2; if(pixelCoord.y % 2 == 1) pixelCoord.x += 1; return((float2)pixelCoord + float2(0.5f, 0.5f)) * screenPixelSize; } . . . #ifndef USE_CHECKER float2 uv = input.texCoord; float gradientNoise = TwoPi * InterleavedGradientNoise(uv * screenSize); #else float2 uv = CheckerResPixelCoordToFullResUV(pixelCoord); floatgradientNoise = TwoPi * InterleavedGradientNoise(uv * screenSize * float2(1.0f, 4.0f)); #endif
Listing 7: Checkerboarding in the shadow mask shader.
As you can see the only modification to the interleaved gradient noise function is multiplication of the y-coordinate by 4.
In the upsampling shader a few optimizations can be turned on/off via defines what can make the shader harder to follow but it really does no magic. One of the optimizations is using 16-bit floating-point (linear) depth buffer. Second and third ones, more important, involve using GatherRed instructions, both on the shadow mask and the depth buffer (both are one-channel textures), to save on sampling instructions.
Figure 15 shows checkerboarded shadow mask in action. With careful eye inspection one can indeed see that the dithered smooth shadows are a bit more crude in the checkerboard variant.
Figure 15: Shadow mask calculated in checkerboard resolution and upsampled.
4 Demo
As it was already mentioned there is the demo application accompanying this article. It is implemented using framework MaxestFramework [13] and uses Direct3D 11 as rendering API. It is located in [11].
Key configuration:
- WSAD + mouse – camera movement.
- Shift – speeding up.
- Space – aligns the light direction with the current camera's view vector.
- Q – if pressed it will display penumbra mask.
- E – if pressed penumbra mask blurring is turned off, what will let see bubbles artifacts.
- F4 – recompile shaders.
- ESC – exit.
The demo's HUD displays a multitude of various options to turn on/off and tweak.
4.1 Performance Comparison
Table 1: Performance on GeForce 660 GTX in 1080p and 20482 shadow map resolution. All shadow mask passes take 16 samples. Penumbra Mask takes 32 samples.
Table 1 shows exemplary performance comparisons for the view presented in the screenshots shown throughout the article. Note here that penumbra pass takes two times more samples (32) than the shadow mask pass (16) while in the original paper [7] this proportion was reversed. One reason is that in this demo we use hardware bilinear shadow map samples filtering so in the end we are not using 16 shadow map samples but actually 64. Another reason is that we could in fact use a smaller number of samples for penumbra, like 16, and this works good but only in the original PCSS implementation. When using penumbra mask pass with only 16 samples then some small artifacts start to pop up. I found 32 samples to work good in quarter res of penumbra mask pass and 16 to be okay for original PCSS. The demo lets you switch between 16 and 32 samples used in penumbra estimation to see the difference.
Regular Shadow Mask is a pass that uses no contact-hardening and whose results are shown in figure 5. Next, there is Regular CHSS Shadow Mask whose results are in figure 12. CHSS is roughly two times more expensive than no-CHSS approach. Note here that penumbra pass takes 32 samples whereas shadow mask takes 16. That would imply that Regular CHSS Shadow Mask should be more than two times as expensive as Regular Shadow Mask. It's not because as you can see in figure 12 most shadows have low penumbras, thus shadow map sampling kernels are not wide. In case where shadow map sampling kernels of all screen's pixels are maxed the performance difference would be greater.
Now going to the gist. Performance measurements for Shadow Mask using Penumbra Mask clearly depict great performance boost. Together with Penumbra Mask both these passes jointly take 0:74 ms what is more than two times faster than Regular CHSS Shadow Mask pass at 1:72 ms. The reason for that is that in Regular CHSS Shadow Mask most performance hit comes from penumbra estimation (32 shadow map samples) and this part is what has been optimized. Note that performance of Penumbra Mask + Shadow Mask using Penumbra Mask (0:74 ms) is even better than Regular Shadow Mask's (0:84 ms). The reason for that surprising difference is obviously that for a tested scene most screen's pixels in penumbra variant have small shadow map sampling kernels and that is what is mostly responsible for great performance. However, in situations where the whole screen is filled with max-penumbra pixels the performance of Penumbra Mask + Shadow Mask using Penumbra Mask is only about 10-15% worse than in Regular Shadow Mask pass.
Finally, checkerboarding indeed is capable of speeding up Regular CHSS Shadow Mask. It does not perform well when we use penumbra mask though. The reason is that Shadow Mask with Penumbra Mask pass becomes so cheap that checkerboarding-related operations like upsampling become very expensive, relatively. The take-away for checkerboarding is to use it only when the pass that it is optimizing is relatively expensive.
4.2 Future Work
This work can further be improved, both on the penumbra generation side as well shadow mask.
Using penumbra mask greatly improves performance but comes with some swimming artifacts which might or might not be a problem. Possibly using temporal filtering could help here. Instead of rendering penumbra mask in quarter res we could still render in full res but only compute one pixel in a 2*2 quad, filling the remaining pixels in subsequent frames. Given that penumbra mask contains low-frequency data this could work.
When it comes to shadow mask it could be beneficial to use more than one mipmap of the shadow map. This would be just for efficiency purposes. By increasing filtering radius we induce more performance hit due to texture cache misses. For samples that are farther we could sample the second mipmap of the shadow map. This applies to penumbra mask as well.
Implementation of temporal checkerboarding is also tempting. Quality should be comparable to full res shadow mask and performance increase should be significant. This could be particularly desirable if we needed more shadow map samples.
5 Conclusions
The point of this article was to present an efficient way to render contact-hardening soft shadows, based on original idea from [7]. I believe that separation of penumbra estimation (in lower res) and shadow mask rendering is the way as it allows for achieving performance nearly as good as when rendering regular soft shadows. There is a cost in form of some swimming artifacts which should not be a deal-breaker. The overall image quality boost that CHSS brings is at least worth exploring, given that performance with regard to non-CHSS will suffer only a tiny bit with penumbra mask approach.
In this paper we discussed:
- Efficient soft shadows with Vogel disk and interleaved gradient noise.
- Original PCSS implementation.
- Penumbra mask as a way to decouple penumbra estimation from shadow mask generation to greatly improve performance.
- Min filter as another way to decouple penumbra estimation from shadow mask generation. Worse quality and performance than in penumbra mask approach though.
- Use of checkerboarding with shadow mask generation.
6 Acknowledgments
I would like to thank Krzysztof Narkowicz of Epic Games for proofreading this article and Adam Cichocki of Microsoft for his ideas to use Vogel disk and checkerboarding.
[1] 4rknova. Shadertoy: Vogel's Distribution Method. https://www.shadertoy.com/view/XtXXDN.
[2] Louis Bavoil. Advanced Soft Shadow Mapping Techniques. http://gamedevs.org/uploads/advanced-soft-shadow-mapping-techniques.pdf.
[3] Alexandre Devert. Spreading points on a disc and on a sphere. http://blog.marmakoide.org/?p=1.
[4] Marton Tamas et al. Chapter 4.1 in GPU Pro 6: Practical Screen Space Soft Shadows. https://www.crcpress.com/GPU-Pro-6-Advanced-Rendering-Techniques/Engel/p/book/9781482264616.
[5] Peter Sikachev et al. Chapter 2.1 in GPU Pro 6: Next-Gen Rendering in Thief. https://www.crcpress.com/GPU-Pro-6-Advanced-Rendering-Techniques/Engel/p/book/9781482264616.
[6] Thomas Annen et al. Exponential Shadow Maps. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.146.177&rep=rep1&type=pdf.
[7] Randima Fernando. Percentage-Closer Soft Shadows. http://developer.download.nvidia.com/shaderlibrary/docs/shadow_PCSS.pdf.
[8] Mikkel Gjol and Mikkel Svendsen. The Rendering of Inside. https://github.com/playdeadgames/publications/blob/master/INSIDE/rendering_inside_gdc2016.pdf.
[9] Jorge Jimenez. Next Generation Post Processing in Call of Duty: Advanced Warfare, 2014. http://www.slideshare.net/guerrillagames/killzone-shadow-fall-demo-postmortem.
[10] Andrew Lauritzen. Summed-Area Variance Shadow Maps. https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch08.html.
[11] Wojciech Sterna. Contact-hardening Soft Shadows Demo. https://github.com/maxest/MaxestFramework/tree/master/samples/shadows.
[12] Wojciech Sterna. DirectX 11, HLSL, GatherRed. http://wojtsterna.blogspot.com/2018/02/directx-11-hlsl-gatherred.html.
[13] Wojciech Sterna. MaxestFramework. https://github.com/maxest/MaxestFramework.
[14] Yury Uralsky. Efficient Soft-Edged Shadows Using Pixel Shader Branching. https://developer.nvidia.com/gpugems/GPUGems2/gpugems2_chapter17.html.
[15] Wikipedia. Shadow mapping. https://en.wikipedia.org/wiki/Shadow_mapping.
About the author:
Wojciech has over 6 years of professional engine/technology/game programming experience, with strong C++ and graphics/rendering emphasis, enriched with experience in
other areas including multiplatform, multithreaded and multiplayer programming, high-performance computing (GPGPU) and machine learning (first steps here). Wojciech is keen on
understanding mathematical and/or algorithmic fundamentals of tools he uses.
This paper was originally published on the author's homepage and is reproduced here with kind permission.


text:
VILLA BOUGHIONA, NisakiRef: 10483 Reduced in price from 520 000€
Built in the eighties, this property was designed for holiday rentals, but the present owners wish to retire and so the property has now come up for sale,
The building is divided into five two bedroomed apartments. Varying slightly in size, each one has a small kitchen, a shower room and two bedrooms with balcony doors out onto a terrace with a sea view.
At the end of a no-through road, the position is extremely quiet, even though it is just a short walking distance from the pretty beach and tavernas at Nisaki. There is ample parking space and the property is completely fenced. More land is available to purchase separately if required.
With some thought and careful design, this could be converted into one or two luxury villas, and there is space for the construction of a swimming pool.
Important Remarks
Please note that all the above information has been provided by the vendor in good faith, but will need verification by the purchaser's solicitor. Any areas, measurements or distances referred to are given as a guide only and are not precise. Floor plans are not drawn to scale and are provided as an indicative guide to help illustrate the general layout of the property only. The mention of any appliances and/or services in this description does not imply that they are in full and efficient working order and prospective purchasers should make their own investigations before finalising any agreement to purchase. It should not be assumed that any contents, furnishings or other items shown in photographs (which may have been taken with a wide angle lens) are included in the sale. Any reference to alterations to, or use of, any part of the property is not a statement that the necessary planning, building regulations, listed buildings or other consents have been obtained. We endeavour to make our details accurate and reliable, but they should not be relied on as statements or representations of fact and they do not constitute any part of an offer or contract. The seller does not give any warranty in relation to the property and we have no authority to do so on their behalf.


text:
The 4 Month Supply of K9 Advantix for Dogs is a topical solution that aids in repelling and killing 99.9% of all fleas, ticks, and even mosquitoes for 4 months. Use K9 Advantix for Dogs once a month to greatly reduce the itching that is caused from insect bites. Safe and effective, K9 Advantix for Dogs has proven to work effectively on dogs over and over again.
PetStreetMall has the Low Prices that you seek & Free Shipping on all orders over $50.
Save Now on K9 Advantix for Dogs to protect your pet from Fleas, Ticks, & Mosquitoes!


text:
Pay 0% interest on purchase over $200!
Noble Cycling has teamed up with Synchrony Financial to get you the bike of your dreams now. On Approved Credit you can get 6 months 0% financing on any transaction over $200. This works for bikes and accessories. You can either apply in person at our shop or online! Both are quick and simple!


text:
Every person has their own way of getting involved with a congregation. Some people are natural joiners, and are comfortable introducing themselves, going along to new events, and making new friends. Others are more introverted and naturally reserved. We hope to welcome and embrace all, and will be glad to know how we can best welcome you.
See our "Finding Community at UUCM" brochure to get a sense of ongoing groups, gatherings and volunteer opportunities. Sign up for email updates to find out about current events.
A good initial way to get involved is to speak with the Minister, Rev. Kevin Tarsa, so that you and he can talk about your particular interests, talents and availability of time. He will be pleased to hear from you. You may contact him at 530-274-1661 or email@example.com.


text:
Manchester United goalkeeper Tim Howard was forced to relive the worst moment of his career as Chelsea booked a League Cup final date with Liverpool with a 2-1 win at Old Trafford on Wednesday.
Damien Duff's 85th minute winner represented the perfect 42nd birthday gift for Chelsea manager Jose Mourinho, whose side ended Sir Alex Ferguson's proud record of never having lost a semifinal in nearly two decades in charge of United.
But for Howard, whose late error allowed Porto to knock United out of the Champions League on Mourinho's last visit to the Theater of Dreams, it was another night to forget.
After Ryan Giggs had cancelled out Frank Lampard's first-half goal for Chelsea, United were looking the more likely winners as the tie -- goalless after the first leg -- headed towards extra time.
But the home side were left shell-shocked when a Duff free-kick from close to the right touchline was allowed to curl into the far corner of the net with Howard rooted to his spot in the center of the goal.
The American international's error against Porto cost him his first-team place. On this occasion however he was absolved by Ferguson, who instead pointed the finger at his central defenders.
"I thought the defenders have every chance to attack it and they have let it bounce into the corner of the net," he said, admitting that he thought United were on course for victory.
The nature of Chelsea's victory was particularly cruel for Howard as it was his reflex save with his right boot that had kept United in the match just before Giggs's stunning equalizer.
Any doubts about the significance of the encounter were dispelled by a glance at the team sheets.
For United, Roy Keane was making his first appearance in the League Cup since the 2003 final while Giggs, Rio Ferdinand and Gary Neville were all turning out for the first time in the tournament this season.
Chelsea underlined their determination to earn a shot at the first trophy of the Roman Abramovich era by recalling first-choice goalkeeper Petr Cech and deciding not to give striker Didier Drogba a rest.
It was United who started the brighter of the two sides but the slick build-up work of Sir Alex Ferguson's men had failed to yield a single clear chance by the time Lampard put Chelsea ahead.


text:
Making Maple Syrup and Maple Sugar Snow
Winter in Central New York
Making Maple Syrup - A First Experience
This story about our first experience making maple syrup is the second of the "Funny Farm Chronicle" stories about our family's antics and adventures on our Central New York farm.
I really didn't have enough to keep me occupied on those long winter days in those first years on The Funny Farm. We moved from New Jersey to very rural Central New York in the middle of the summer when gardening, kids, goats, and the house kept me busy. Throughout the summer, the kids and I enjoyed hiking our woods and fields gathering berries and apples and foraging for wild food. Encourage by my back-to-nature friends as well as Euell Gibbons' books, I experimented cooking wild foods as well as some interesting vegetarian recipes. But after the episode of cooking soybeans in The Pressure Cooker Misadventure, I had put the back-to-nature stuff on a back burner for a while.
Cabin Fever after a long winter
The exceptionally long winter of 1969 started on October 6th when we got 10" of snow. We were thrilled to have the opportunity to try out our new toboggan as well as the old wooden skis we found at an auction. The snow snowed and the wind blew, continuing through October, November, December, January… It was a very long winter! By the end of February, the novelty of snow had long worn off, and we were all feeling some cabin fever.
Making Maple Syrup the Old Fashioned Way
Maple Syrup Evaporator
Learning About Making Maple Syrup
Our little town had a nice library that we haunted for reading material. Determined to pursue my idea of living off the land, I discovered some great books, and was pleased to find detailed instructions for making maple syrup. In January and February, everything was still buried under four feet of snow, and it seemed a little premature to think about gardening or stalking the wild asparagus. Imagine my delight when I discovered that there was something we could produce while the ground was still white!
Our old farm happened to have a stand of sugar maples, and we were all eager to try something new. Making maple syrup seemed like the perfect thing.
If you live in the northeastern states where sugar maples grow, you know that March can be blustery and cold, but can also have warm sunny days. As soon as the days start to warm up, and the sap climbs up the trees, it's time to get out the sap buckets and spiles, the drill and bits, the toboggan and cooking pans.
Facts About Maple Syrup
- Maple syrup can only be made from the sap of Sugar Maple Trees.
- American Indians taught the settlers in northern U.S. and Canda how to make maple syrup.
- Maple sap contains about 4% sucrose. Maple syrup is about 66% sugar.
- It takes 40 gallons of sap to make 1 gallon of syrup.
- Maple syrup is high in antioxidants.
- Maple syrup has about 261 calories in 3 1/2 ounces, but is also high in iron, manganese and zinc.
- Commercial sugar makers grade their syrup by color, with the lightest amber color being the most desirable Grade A syrup.
Making Maple Syrup by the Book
According to my books, early March, when nights still dipped below freezing, but daytime temperatures rose to the 40- 50°F was the perfect time to make maple syrup. The family agreed that it would be fun to try it, so we set out to find spiles (spouts put into the tapholes of the tree to collect sap) and sap buckets at our local farm store. We planned to collect the sap in buckets and cook it outdoors in the old, traditional way.
Making Maple Syrup Was A Family Affair
Unfortunately, our wood lot was nearly a quarter mile from the house at the back of our property. In early March, that quarter mile was covered in about three or four feet of snow. No problem. We tied our toboggan onto the back of our crawler tractor, loaded on the buckets, drill, spiles, kids, dog (we never went anywhere without the dog) and made our way out to the woods. There were several trees that were the required 10" or more diameter. Bill and the boys drilled the holes and set the spiles and hung our buckets. We placed covers on the pails so that dirt and squirrels didn't fall into the sap. It was exciting to watch the sap begin to drip into the buckets. Now, all we had to do was collect forty gallons of sap so that we could make a gallon of syrup.
While waiting for the sap to collect, there was much to do. Some friends who inadvertently removed much of the wallpaper in their house told us that it wasn't a good idea to try evaporating the syrup indoors. The steam and moisture can destroy the décor! So we collected firewood and built a stand for the large evaporating pan that my husband built. Next, we needed something to put the sap in when we collected it from the woods. We were able to get a 50 gallon stainless steel drum that was just perfect, and set about cleaning and disinfecting it. Now all was ready.
We waited…and waited…drip…drip…drip... The first lesson we learned is that the sap only runs during the day when temperatures rise well above freezing. By the next afternoon, the temperatures had risen and we collected about 20 gallons of sap to sled back to the house for cooking. I was pretty sure we could make the syrup by dinnertime. (Haha…)
Finishing off the Maple Syrup
Few people realize how long it takes to make maple syrup. Until we started collecting and cooking the sap, we had no idea of the time it would involve. We tended the wood fire long into the night and began again the next day. When it seemed to be getting syrupy, we started testing it with a thermometer. The syrup stage on a candy thermometer is 219°F. Because the syrup would burn easily once it got close to this stage, we cooked it to about 200°F and then poured it off into a pot to finish off inside the house where we could watch it closely.
Is it syrup, yet?
How thrilled we were when the correct temperature was finally reached and we had syrup! But the syrup had a foamy, scummy look on top and dark specks were floating in it. Many old-timers traditionally dropped a slightly beaten raw egg into the syrup and cooked it for a minute. The egg seemed to gather up impurities as it floated to the top. We skimmed off the foam and egg, then strained the syrup through cheesecloth. At this point, virtually every surface and spoon in our kitchen was sticky, but we were thrilled as we bottled our 2 quarts of syrup and admired its beautiful amber color.
Maple Taffy on Snow
Maple Sugar Snow~ Maple Sugar Taffy
As our second batch was cooking down, we had a great idea! We would make maple sugar snow (sometimes called maple wax or maple taffy depending on the locality). To make the maple taffy, we continued cooking the maple syrup to the soft ball stage (235-240°F). When the syrup is the correct temperature, it's poured onto a paper plate of packed snow. When syrup meets the cold, it hardens, and the sweet maple taffy is picked up and eaten. There is NOTHING else in the world like it! Many people who grew up in maple sugar country remember maple sugar snow as a childhood treat, and it sure didn't take long for it to become an annual tradition in our house.
Making Maple Syrup -A Money Making Business For Our Teens
In later years as the boys got older, we expanded our little operation and were able to make enough extra syrup so that the boys could sell some half pint containers of syrup at the local Farmer's Market. We always kept enough to use in cooking and baking, and even cooked some down into maple sugar. I still buy maple syrup for pancakes and waffles and to use in Butternut Squash Casserole and Maple Cake.
Would you like to write?
If you're interested in writing, why not join the HubPages community? Write on any topic that interests you and earn money, too. It's free and fun! Click here for more information: Join HubPages
Fond Memories of Wood Smoke and Maple Syrup
Looking out the window at the wet spring snow, I can still smell the mixture of maple and wood smoke that marked the maple syrup season in New York. Our few gallons of maple syrup cost us only a little hard work, but the sweet memories are priceless.
Copyright @2011 Stephanie Henkel
Try Some Pure Maple Syrup!
Funny Farm Stories
- A Pressure Cooker Misadventure - Cooking Soybeans
A would-be vegetarian tells a funny story about cooking soybeans in a pressure cooker. It ends in a disaster, but that doesn't stop her from planning the next experiment following Euell Gibbons advice on foraged foods.
- Childhood Memories of the 1950s - The Day We Caught...
Memories of being a kid in the 1950s include playing Tarzan of the Apes. True story of the day we caught a monster in our Tarzan-inspired trap!
- Strange Foods and Downright Weird Foods that People ...
Strange foods that people eat include fried pickles and head cheese. But how about the downright weird foods like corn smut, fertilized duck eggs and coffee beans picked out of civet poop? Learn about some really unusual food that Americans eat.
You are most welcome. Its a nostalgic subject for me, also.
Have been looking over your hubs. you have some great ones here! Keep up the good work!
What a great hub! I enjoyed it!
Oh I like syrup and pancakes. It takes a strong willed person to collect in the cold woods. You where even smart enough to sell it at the market. Did you have to make labels for it to?
I lived in Maine for several years, in the boonies! Fond memories of maple sugar snow, and picnics in the snow ....... Thanks for sharing
This is a great hub. I love maple syrup and I am going to give maple taffy a go. As a kid I use to poor maple syrup into my milk, until I realized how expensive it was one day. Socially shared.
I have a friend who talks about some of the memories of her childhood which include making maple sugar syrup taffy. I enjoyed reading about this subject and enjoyed your pictures as I can hardly imagine how tasty and exciting this was for the kids!
My cousin used to make his own maple syrup every year until he passed away. It was so good. I've not had Maple Syrup snow since I was a child, but I do remember how good that was :) Really enjoyed your story.
To say that maple syrup is worth the price is an understatement!
I imagined the process was as you explained by the big producers.
Oh dear, I do love nice food!
Your hub is as sweet as Maple syrup.
Now that I have learned the process to make the syrup I can appreciate why it is so expensive to buy.
Good memories for you!
Wow! I have a mean sweet tooth, and this Hub had me salivating. There's nothing quite like the taste of maple syrup, and that maple taffy/wax sounds (and looks) so cool. The next time we're up in the Northeast in the winter, we're going to have to try this.
They make maple syrup around here and use to make it on our land. Our barn has some of the equipment in it. We maple trees all over the land.
Maple Taffy on Snow never heard of it.
Great hub.
Stephanie - That maple syrup looks so good! I can only imagine how wonderful it must taste. I'm guessing there hasn't been as much maple sugar snow made this year, with the lack of snow across the country, but what a fun and mouth-watering candy to make when the snow returns. Terrific hub.
Oh my GOSH Stephanie Henkel- this is such a great Hub! The photos are gorgeous, your information is super helpful, and I love the video and fun facts, too! Brava!
I'm just bummed I can't go out and make maple syrup right now... it sounds like so much fun!
Hi Stephanie,
Enjoyed reading this hub. It's sounds like you all had so much fun. Some people up here in Northern Maine, where I live now, make maple syrup. I now see why it's so expensive. I didn't realize it takes 40 gallons of sap to make one gallon of maple syrup. Wow!
What a great story. You are by far more ambitious than I. Of course, I don't live on a farm in Central NY either. Thanks for sharing :)
Wow, very nice... always wanted to make maple syrup... you have made such a great story about it... thanks..
Beautiful! You shared some wonderful memories here. I enjoyed this hub so much!


text:
Big Data and Financial Reporting are Only Useful if You can Make Sense of the Numbers
Here are 5 ways Microsoft Dynamics ERP Systems Help You Turn Data Into Insight
Do you struggle to make sense of the reams of data your business collects? As we all know, data, including that which is captured in your accounting/ financial reporting system is only really useful if it provides actionable insight. When you choose a Microsoft Dynamics ERP system, you get a software package with the power to put data to work for your organization. Ready to take the burden out of business intelligence? See how Microsoft Dynamics can help.
Need to print a copy of the infographic to save for later or share with colleagues? No problem. Download the PDF version.
Click the image to view larger
Still have questions about Microsoft Dynamics ERP solutions and whether they're a good fit for your business? No problem! Call (336)315-3935 or send us an email.


text:
Honorable Mention
Digital Oscilloscope
United States
Digital oscilloscopes generally require a PC, but they don't always have a display built in. This digital oscilloscope has a nicely sized screen and can be a great addition to any workbench. The LM3S9B96-based design uses the extended peripheral interface bus and direct memory access to drive an LCD directly without a graphics controller. The internal RAM is used as the display buffer. The embedded RTOS simplifies the software required for the various tasks. The quadrature encoder interface is used for a scrolling knob.


text:
Jobs & Careers
HHLA is among the most attractive employers in North Germany. Approximately 6,000 people work in the various group companies, with most of their workplaces located in and around the Port of Hamburg. Work and vocational training in a vibrant environment are diversified, and the dynamic development results in the most varied of opportunities. The following pages contain comprehensive information about 'HHLA the employer' and 'HHLA the vocational trainer'.
Inside the port with Instagram
We make the Port available for all to see, even though access to parts of it is restricted. Follow "containerhafenhamburg" on Instagram and post your own photos of the Port!
Popular HHLA Videos
This is what the Port of Hamburg looks like! Subscribe to HHLA channel on YouTube to make sure you don't miss any new uploads!
Specialists for Large Equipment
In-house training of mechatronics engineers secures important specialists for HHLA.


text:
International Compliance
Guernsey remains committed to meeting the Financial Action Task Force standards on Anti Money Laundering (AML) and Combating the Financing of Terrorism (CFT). Accordingly, the Bailiwick of Guernsey has developed robust and effective mechanisms in order to ensure its financial systems and wider economy is protected from the threats of money laundering and financing of terrorism.
Guernsey has in place the relevant legislation which obliges all beneficial owners of Guernsey companies and other legal persons to be properly identified and recorded. Guernsey also regulates trust and company service providers (CSPs), this regime ensures that all CSPs are fit and proper, having in place appropriate policies and procedures with respect to AML/CFT and are subject to regular inspections by the Guernsey Financial Services Commission. Bearer shares are also prohibited for Guernsey companies.
FATF Recommendation 24 - Transparency of Legal Persons
Sanctions and Counter-Terrorism Notices


text:
Our aim is to draw together as much technical and statistical information as possible about the Group A Subaru Impreza 555 into one quality repository.
Where possible the data contained in this website, which has been gathered over several years from many sources, has been cross-checked and hence is felt to be relatively 'correct'.
Colin McRae piloted the Group A GC8 Impreza 555 during his World Championship winning year, 1995, and along with Carlos Sainz, turned the Subaru brand from the farmer's choice, to the enthusiast's choice.
Wherever a blue and yellow 555 Impreza is seen nowadays, you can guarantee there will be a large crowd of admirers. The GC8 Impreza 555 has become an icon of world rallying.
Feedback is welcomed on both the content and accuracy of our data – Contact Us
We would appreciate a credit or link-back should you use this data.


text:
On Thin Ice (Kukkulan Kuningas) (2009)
- Studio: Independent
- Release: October 10, 2009
- Director: Alli Haapasalo
- Writer: Alli Haapasalo
- Cast: Elena Leeve, Pertti Sveholm, Tiina Weckström, Jussi Nikkilä, Jani Volanen
Video archive for the film On Thin Ice (Kukkulan Kuningas), which has a domestic theatrical release in the year of 2009. There is currently one video available for the film, of which one and only one is a trailer, as listed below. Happy viewing!
Featured Movie Star Wars: The Rise of Skywalker


text:
They say that clothes make the man. We at Uniformes Moderna believe that uniforms play an important part in creating an image for your company.
You want to give your staff a look that will set you apart from the competition and give your customers an immediately-identifiable, consistent, professional image of your company, while providing comfortable, functional, and stylish uniforms for your staff which will make them proud to be a part of your team.
Let Uniformes Moderna work with you to achieve these dual goals within your budget and time frame. Our careful focus on each of our customers' needs and requirements has made us a leading supplier of uniforms and workwear for businesses of all sizes and of individuals in the Montreal region and beyond for the past 40 years.
We offer a full range of services to meet all of your uniform, work wear, and promotional needs
Personalisation is the finishing touch on your uniforms and work wear. We offer a full personalisation service.
Les Uniformes Moderna
235, rue Beaubien East
Montreal (Quebec) H2S 1R5
Tel : (514) 279-2016
Fax : (514) 279-6559
Questions & Comments :
Find out about products, including
pricing and availability: